天天看点

js遍历删除指定元素踩坑forEach()filter()

forEach()

let arr = [1, 1, 2]
arr.forEach((item, index, arr) => {
  if (item == 1) {
    arr.splice(index, 1)
  }
})
console.log(arr) // [1, 2]
           

居然没有完全删掉??

我又做了实验↓↓

js遍历删除指定元素踩坑forEach()filter()

数组[1,1,2]删除不干净,数组[1,2,1]却可以??

又去网上找了下,原因是使用splice容易使数组的index乱序。

所以还是用ES6的filter吧

filter()

let arr = [1, 1, 2]
arr = arr.filter(item => {
    return item != 1
})
console.log(arr) // [2]
           

继续阅读