数组塌陷
var arr = [1,2,3,4,5];
for(var i=0;i<arr.length;i++){
arr.splice(i,1);
}
console.log(arr);
- 当
i=0
时,,删除的是元素 1,arr.length=4
,arr[0] = 2,arr[1] = 3
- 当
i=1
时,,删除的是元素 3,arr.length=3
,arr[0] = 2,arr[1] = 4,arr[2] = 5
- 当
i=2
时,,删除的是元素 5,arr.length=2
,arr[0] = 2,arr[1] = 4
- 当
i=3
时,因为之前arr.length=2
,arr[3]
是不存在的
- 这种现象就叫做数组塌陷。
解决方法
- 倒着删
for(var i=arr.length-1; i>=0; i--){
arr.splice(i,1);
}
console.log(arr);
- 让变量不递增
for(var i=0; i<arr.length; i++){
arr.splice(i,1);
i--;
}
console.log(arr);
- 每次删除第一个元素
for(var i=0; i<arr.length; i++){
arr.splice(0,1);
}
console.log(arr);
- 使用while循环删
while(arr.length){
arr.splice(0,1);
}
console.log(arr);