js forEach的坑
如题
我第一次的处理
//这个是不通过的 因为forEach删除自身元素index不会被重置 function remove(arr, item) { let newArray = arr.slice(0) newArray.forEach( (ele,i) =>{ if(ele == item){ newArray.splice(i,1) } } ) return newArray }
改成使用for循环,完美解决
let arr = [1, 2, 1], i = 0, length = arr.length; for (; i < length; i++) { // 删除数组中所有的1 if (arr[i] === 1) { arr.splice(i, 1); //重置i,否则i会跳一位 i--; }; }; console.log(arr);//[2]
参考地址:https://www.cnblogs.com/echolun/p/11544045.html
君不见,高堂明镜悲白发,朝如青丝暮成雪