数组塌陷问题
2019-10-11 本文已影响0人
瑞破破
先举个小栗子
我们想用一个循环,把数组中的每一项都删掉,但是出现了问题,循环结束后,并没有全部删除。
let arr = [1,2,3]
for(let i=0;i<arr.length;i++){
arr.splice(i,1)
}
console.log(arr) // [2]
解释:
第一次循环,i=0 ; arr.length=2;
循环后,删除第一项
此时,数组变为[2,3]
;
继续第二次循环,i=1 ; arr.length=2
循环后,删除第二项
此时发现,数组的第二项是数字3;把第二项删除,最后剩一个数字2
所以:
循环每结束一次,删除一项,数组的length以及每一项的下标都会改变,
最后导致达不到预期的效果