js 三种方法:同时删除数组的多个元素的 array js
有时候我们会遇到需要同时删除数组的多个元素的情况
如果只是普通的遍历删除,会导致每一次删除之后,数组元素的坐标值改变,就对应不上了。
可能对应上的 index 已经超出了被删减后数组的长度
有三种解决思路:
- 倒序遍历,这样从后面删除元素,不会影响前面的数据坐标
- 以 for 遍历,在每次删除元素后,坐标值减一回退一位
- 使用
Array.filter()
进行筛选
这里推荐第三种,来看一下第二种方法和第三种方法的实现:
先看需求
比如,我现在遇到这样一个场景,有一个词条数组,每个词条都有自己的 id
,需要从总的词条数组中批量删除一些数据
以下是需要删除的 ids
let wordIds= ["2","5","11","16","15","18","7"]
实现
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))
}