var colors = ["red", "blue", "grey"];
for(let i = 0; i<colors.length;i++){
colors.splice(i,1);
}
console.log(colors);// ["blue"]
//因为splice删除的关系for到index为1的时候,指向的不是blue而是grey,这就是数组塌陷
//foreach也有这个问题
解决办法
1. 下标 i–
var colors = ["red", "blue", "grey"];
for(let i = 0; i<colors.length;i++){
colors.splice(i,1);
i--;
}
console.log(colors);// [] 在删除的时候给i--就能避免数组塌陷带来的问题
又或者以下例子更好说明
var colors = ["red", "blue", "grey"];
for(let i = 0; i<colors.length;i++){
if(colors[i] == "red"){
colors.splice(i,1);
i--;
}
}
console.log(colors);// ["blue", "grey"] 在删除的时候给i--就能避免数组塌陷带来的问题
2. 从后边删除
var colors = ["red", "blue", "grey"];
for(let i = colors.length-1; i>= 0;i--){
colors.splice(i,1);
}
console.log(colors);// [] 这样也是没有问题的