为了从数组中删除对象,我可以使用以下代码找到我想要删除的对象:
this.data = this.data.filter(item => this.multipleSelectedIds.includes(item.id))
但是发生的事情是我为this.data
数组分配了我想要从中删除的所有对象。
什么是ES6最佳实践逻辑来实现“排除”的类型,所以我得到的是所有id都不在this.multipleSelectedIds
而不是我现在所拥有的对象完全相反?
答案 0 :(得分:8)
只需使用!
,NOT运算符:
this.data = this.data.filter(item => !this.multipleSelectedIds.includes(item.id))
// ----------------------------------^
由于以上内容多次通过multipleSelectedIds
(this.data
中的每个条目都有一次),如果这些是 非常 大型数组,那么可能值得制作Set
或其包含的id
值的对象,然后使用set / object,例如:
使用Set
:
const ids = new Set();
this.multipleSelectedIds.forEach(id => {
ids.add(id);
});
this.data = this.data.filter(item => !ids.has(item.id))
使用对象:
const ids = Object.create(null);
this.multipleSelectedIds.forEach(id => {
ids[id] = true;
});
this.data = this.data.filter(item => !ids[item.id])
...但是您必须处理非常大的数组才能使开销值得。