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