我知道如何使用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个元素的数组,这将遍历i
s(0,1和2)。
for(let i = 0; i < array.length + 1; i++){...}
是奇怪。它从索引0循环到array.length
。例如,对于包含3个元素的数组,这将遍历i
s(0、1、2和3)。这意味着,如果循环中的某个元素引用了array[i]
,那么在最后一次迭代时,该值将为undefined
。
大多数时候,看到这样的东西会让我认为有人犯了打字错误或逻辑错误——尽管看到一些算法使用了类似的东西我也不会感到惊讶。
for(let i = 1; i < array.length; i++)
从索引1迭代到array.length - 1
。例如,对于包含3个元素的数组,这将遍历i
s(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]是每个数组的第一个元素。