目录-入口-由此开始-大纲-总览-概括-枢纽-指导-指引-总领 js 静态遍历 常用for循环 foreach 动态遍历 child::动态遍历梗概 在遍历过程中,对迭代对象进行修改,导致遍历结构发生改变,就会导致缺漏或者重复遍历 实例: 错误案例: 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 说明 for of遍历数组的时候是基于最基础的for循环语法实现的,即通过索引访问数组元素 当删除一个当前访问的元素时,索引指向下一个未访问的元素,导致误以为下一个元素也被访问的 解决方案 及时同步遍历结构 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() 指向原始笔记的链接