Javascript数组长度混淆问题

时间:2017-01-22 19:34:53

标签: javascript arrays

我无法理解问题的答案。

我被告知在任何数组中找到答案的最后一个元素:

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

然而,我被告知要循环遍历整个数组列表,例如

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

问题是.... 为什么counter < presidents.length而不是counter < presidents.length-1在之前的示例中是这样的?

3 个答案:

答案 0 :(得分:0)

因为您还需要打印最后一个值。

例如,让数组为

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

此处presidents.length = 4 现在,如果您执行counter < presidents.length-1,则计数器会从 0变为2

你要么做 counter <= presidents.length-1counter < presidents.length
 为了使counter 0到3

PS:数组索引在JavaScript中从0开始。

答案 1 :(得分:0)

因为数组索引从零开始,最后一个元素将在(size-1)位置。在for循环中,您使用的是小于(&lt;)符号。它将是&lt;大小或&lt; =(大小-1)。

答案 2 :(得分:0)

可能还值得一提的是,for循环因为事情的发生而起作用。请听以下声明:

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

立即评估

initialExpression,通常用于创建要递增的变量,就像使用counter=0一样。

condition在执行执行语句之前进行评估。如果条件是真实的,则执行该语句;如果没有,循环终止。

执行语句后

incrementExpression被评估为。因此,在此处递增counter会通知下一次condition评估。

condition评估结果放在一起,如下所示:

&#13;
&#13;
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
&#13;
&#13;
&#13;