2017-01-22 2 views
1

У меня возникли проблемы с пониманием ответа на вопрос.Ошибка пула Javascript Array Length

мне сказали, чтобы найти последний элемент в любом массиве, ответ был бы, например:

alert(countries[countries.length - 1]); 

Однако, мне сказали идти петлю через весь список массива я бы поставил, например

for(counter=0; counter < presidents.length; counter++) { 
    document.write(presidents[counter]); 
} 

Вопрос: .... Почему есть counter < presidents.length, а не counter < presidents.length-1 как в примере раньше?

+2

Поскольку '<' не '<=', то условие будет верно лишь до того, когда 'счетчика '' 'президенты.length-1'.* ('a

ответ

0

Потому что вам нужно также напечатать последнее значение.

Например, пусть массив будет,

var presidents = ["one", "two", "three", "four"]; 

Здесь presidents.length = 4.
Теперь, если вы делаете counter < presidents.length-1, тогда счетчик обратится от от 0 до 2.

Вам необходимо либо сделать
counter <= presidents.length-1 или counter < presidents.length
для того, чтобы перейти от counter0 до 3.

PS: Индексы массивов начинаются с 0 в JavaScript.

0

Потому что индекс массива начинается с нуля, а последний элемент будет находиться в (размер-1). В цикле for вы используете символ меньше (<). Это будет < размер или < = (размер -1).

0

Возможно, также стоит упомянуть, что цикл for работает из-за того, что происходит. Возьмем следующее заявление:

for ([initialExpression]; [condition]; [incrementExpression]) { 
 
    [statement] 
 
}

initialExpression оценивается сразу и, как правило, используется для создания переменной для увеличения, как вы делали с counter=0.

condition оценивается до Выполнение инструкции. Если условие является правдивым, выполняется оператор; если нет, цикл завершается.

incrementExpression оценивается после Выполнение инструкции. Итак, приращение counter здесь сообщает следующую оценку condition.

Собирает вместе, condition оценки выглядит следующим образом:

if 0 < presidents.length // true 
 
if 1 < presidents.length // true 
 
. . . 
 
if 44 < presidents.length // true and will produce the final president element 
 
if 45 < presidents.length // false and terminate the loop