2017-02-04 28 views
0

Эй У меня есть вопрос об этой части кода, который у меня есть:сложение и вычитание в пределах массива

var levelsRange = arrayeventslevel[0] + " through " + arrayeventslevel[arrayeventslevel.length-1]; ; 
$("#existorders").html(
    "There are currently: " + arrayeventslength.length + 
    " events on " + dayoftheweek + 
    "<br/>" + " with order levels: " + levelsRange + 
    "<br />" + "You can move new event to levels ranging between: " + newLevelsRange 
); 

в настоящее время levelsRange выходов, например от 1 до 6 диапазона. Если это так, Мне нужна другая переменная newLevelsRange, которая должна указывать от 0 до 7 на основе начального диапазона переменных. Однако, если levelsRange говорит от 0 до 6, новая переменная должна указывать от 0 до 7 NOT -1 до 7

У меня возникли проблемы с правильной вычитанием из исходной переменной информации. Может кто-то помочь.

+1

Используйте ['Math.max'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max), чтобы не опускаться ниже нуля. В противном случае это простое цифровое сравнение. –

ответ

1
var newLevelsRange=(arrayeventslevel[0]||1)-1 + " through " + (arrayeventslevel[arrayeventslevel.length-1]-1); 

Просто проверить, если первый элемент равен нулю, если да, то 1 ...

+0

Я просто попытался заменить то, что у меня есть, с тем, что вы дали мне, и я получил NaN для этой переменной – coder

+0

@ Jonasw: Возможно, вам стоит протестировать свое решение, прежде чем просить OP проверить его с помощью jsfiddle. Просто скажите ... –

+0

О, извините, @coder, моя ошибка –

0

Я просто сделал это

if(arrayeventslevel[0] != 0){ 
          arrayeventslevel[0] = arrayeventslevel[0] - 1; 
         arrayeventslevel.length =arrayeventslevel.length + 1; 
        } 

        var newLevelRange = arrayeventslevel[0] + " through " + arrayeventslevel.length; 

не уверен, как использовать Math.max

+0

переопределение свойства длины массива - самое худшее, что вы можете сделать. just sayin –

+0

@Jonasw: Это не отменяет его, но устанавливает его в значение, которое, если оно отличается от оригинала, будет либо усекать, либо расширять массив. Является ли это хорошей идеей здесь, зависит от того, как массив будет использоваться после этой точки. Я скажу, что это на первый взгляд похоже на странное использование массива. Кто знает, может, имеет смысл. –

+0

@coder: 'var levelsRange = Math.max (0, arrayeventslevel [0] - 1) +" through "+ (arrayeventslevel [arrayeventslevel.length-1] + 1);' часть 'Math.max' даст вам больше из '0' и' arrayeventslevel [0] - 1', поэтому, если последний падает ниже '0', вы получите' 0'. –