梗概
在遍历过程中,对迭代对象进行修改,导致遍历结构发生改变,就会导致缺漏或者重复遍历
实例:
错误案例:
let arr = ["a", "b", "c"]
let count = 0
for (const i of arr) {
console.log(count, '----', i)
if (i == "b") arr.splice(arr.indexOf(i), 1)//删除当前元素
count++
}
//0 ---- a
//1 ---- b
少遍历了个3
说明
解决方案
及时同步遍历结构
let arr = ["a", "b", "c"]
for (let i = 0; i < arr.length; i++) {
console.log(i, '----', arr[i])
if (arr[i] == "b") {
arr.splice(i--, 1)//修改了迭代对象后,让索引与其同步
}
}
// 0 ---- a
// 1 ---- b
// 1 ---- c
- child::js 删除数组元素 插入数组元素 splice()