js 根据ids【数组】前台批量删除数组对应id元素

js 根据ids【数组】前台批量删除数组对应id元素

给定一个id的数组集合ids 结构类似
["1","2","3"]
table的数组data机构类似

[

{

id:"2",

name:"xx"

},

{

id:"1",

name:"xx"

},

]

要求吧data里对应 ids里面的id的数据删掉

 for (let j = 0; j < this.data.length; j++) {

for (let i = 0; i < this.ids.length; i++) {

if (this.ids[i] === this.data[j].id) {

this.data.splice(i, 1);

}

}

}

这样写 貌似只能一个一个删除,怎么才能批量删除?


回答:

可以用 filter 排除。
注意 includes 要类型相同

let data = [

{

id:"2",

name:"xx"

},

{

id:"1",

name:"xx"

},

];

let ids = ["1","2","3"];

let res = data.filter(item=>!ids.includes(item.id))


回答:

把你的外层遍历顺序改成从后向前遍历试试呢?
遍历过程中增删数组元素会影响后面的元素位置。


回答:

function removeItemsById(list, ids) {

const idSet = new Set(ids)

return list.filter(item => !idSet.has(item.id))

}

如果这个 ids 或者 list 比较大的时候,应该用 ids 创建 Set 对象后再遍历过滤。


回答:

function remove(source, target) {

for (var i = source.length; i--;) {

for (var j = 0; j < target.length; ++j) {

if (source[i].id === target[j]) {

source.splice(i, 1);

}

}

}

return source;

}

console.dir(remove(this.data, this.ids));

以上是 js 根据ids【数组】前台批量删除数组对应id元素 的全部内容, 来源链接: utcz.com/p/937525.html

回到顶部