"array.length + 1"在 JavaScript 中是什么意思



我知道如何使用Javascript for循环来循环数组。但我还是不完全明白数组是什么。长度+1是做的,特别是+1部分。

当使用for循环时,我知道它是这样的

for(let i = 0; i < array.length; i++){...}

但是我也看到了这个

for(let i = 0; i < array.length + 1; i++){...}

我之前认为数组。Length + 1与让I = 1是一样的但我的代码在这样做时不起作用,例如

for(let i = 1; i < array.length; i++)

与上面的for循环不同。有人能解释一下原因吗?

This

for(let i = 0; i < array.length; i++){...}

从索引0循环到array.length - 1。例如,对于包含3个元素的数组,这将遍历is(0,1和2)。

for(let i = 0; i < array.length + 1; i++){...}

是奇怪。它从索引0循环到array.length。例如,对于包含3个元素的数组,这将遍历is(0、1、2和3)。这意味着,如果循环中的某个元素引用了array[i],那么在最后一次迭代时,该值将为undefined

大多数时候,看到这样的东西会让我认为有人犯了打字错误或逻辑错误——尽管看到一些算法使用了类似的东西我也不会感到惊讶。

for(let i = 1; i < array.length; i++)

从索引1迭代到array.length - 1。例如,对于包含3个元素的数组,这将遍历is(1和2)。

将比数组中的元素少迭代一次。这意味着,如果循环体总是引用array[i],而不是array[i - 1],那么数组中的第一个元素将总是被跳过。

这比从0开始要少得多,但是可以看到,特别是当逻辑需要将某些相邻元素相互比较时(例如,array[0]array[1],array[1]array[2],等等)。

Array.length + 1

表示数组中元素的个数,并加上1。

包含n元素的数组的长度为n,因此当使用array.length时,循环将运行n - i次。如果是let i =0,那么循环将运行n次。如果使用i = 1,那么如果使用array.length,循环将运行n-1次。因此,您将错过循环的1次迭代。

如果您需要使用i=1来开始您的迭代,您应该使用array.length +1来获得相同数量的迭代。

for(let i =0;i<array.length;i++){} // n iterations

是与

相同的迭代次数
for(let i= 1;i<array.length +1;i++){}  // n iterations
for(let i=1;i<array.length;i++){}  // n-1 iterations 

总是少1次迭代。

请记住,数组索引使用0-based计数器,因此Array[0]是每个数组的第一个元素。

最新更新