js 三种方法:同时删除数组的多个元素的 array js

有时候我们会遇到需要同时删除数组的多个元素的情况
如果只是普通的遍历删除,会导致每一次删除之后,数组元素的坐标值改变,就对应不上了。
可能对应上的 index 已经超出了被删减后数组的长度

有三种解决思路:

  1. 倒序遍历,这样从后面删除元素,不会影响前面的数据坐标
  2. 以 for 遍历,在每次删除元素后,坐标值减一回退一位
  3. 使用​​Array.filter()​​ 进行筛选

这里推荐第三种,来看一下第二种方法和第三种方法的实现:

先看需求

比如,我现在遇到这样一个场景,有一个词条数组,每个词条都有自己的 ​​id​​​,需要从总的词条数组中批量删除一些数据
以下是需要删除的 ​​​ids​

let wordIds= ["2","5","11","16","15","18","7"]

js 三种方法:同时删除数组的多个元素的 array js_array

实现

1. 方法一 倒序删除

这个方法不介绍了,不推荐,可以查看其它人怎么写的

2、方法二 每次删除后,回退一位坐标

// 删除词条
deleteWords(wordIds){
for (let i=0; i< this.dictOrigin.length; i++){
if (wordIds.includes(this.dictOrigin[i].id)){
this.dictOrigin.splice(i, 1)
i--
}
}
}

3、方法三 使用 ​​Array.filter()​​ 过滤

直接将过滤后的数组重新赋值给原来的数组即可

// 删除词条
deleteWords(wordIds){
this.dictOrigin = this.dictOrigin.filter(item => !wordIds.includes(item.id))
}