js数组,在遍历中删除元素
//有效的方式--改变下标,控制遍历
for(var i=0;i<arr.length;i++){
if(...){
//使后面的元素前移,数组长度减1,
//如果不减,将漏掉一个元素
arr.splice(i,1);
i--
}
}
//无效的方式--for...in无法控制遍历
for(let i in arr){
if(...){
arr.splice(i,1)
i--
}
}
总结:
- 使用第一种方式才能改变下标,控制遍历
- 第二种方式无法控制遍历
- 在遍历完数组后需要减-1,否则会漏下一个元素未删除