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

posted @ 2021-01-20 11:11  lzhflzjx  阅读(236)  评论(0编辑  收藏  举报