js数组坍塌
首先 这里有个数组
var arr = [0,1,2,3,4,5,6,7,8,9];
然后再用 for 循环,循环 删除数组中的数据,每循环一次 删除一个数据单元。
for(var i = 0; i <= arr.length - 1; i++ ){
arr.splice(i,1)
}
console.log(arr)
那么 现在的输出是 [1, 3, 5, 7, 9] 还剩 5 个 单元 ,也就是还有一半没有删除。
因为:
我们使用for 循环遍历 arr , 当i=0的时候 , 我们删除了位置为0的元素,
此时,位置为1的元素接替了位置 0 , 但 同时 i 也累加 了, 下次执行 删除
操作的时候 i 变为1 , 再次执行删除操作,其实是删除了 现在位置为1 的元素 ,
中间 跳过了, 所以 最后的结果 只 删除了一半 。
解决 方法有两种
方法1 :
// 在循环体内让 i-- , 这样每次删除 就是 只删除 位置为0 的元素
for(var i = 0; i <= arr.length - 1; i++ ){
arr.splice(i,1)
i--;
};
console.log(arr);
方法 2 :
// 倒着来,这样每次删除的就是最后一个位置 的元素
for(var i = arr.length - 1; i>=0; i--){
arr.splice(i,1);
}
console.log(arr);
这样 就全部删除完了