yar*_*bar -3 javascript ecmascript-2016
为了从数组中删除对象,我可以使用以下代码找到我想要删除的对象:
this.data = this.data.filter(item => this.multipleSelectedIds.includes(item.id))
Run Code Online (Sandbox Code Playgroud)
但实际情况是我为this.data数组分配了我想要从中删除的所有对象.什么是ES6最佳实践逻辑来实现"排除"的类型,所以我得到的是所有id不存在的对象this.multipleSelectedIds而不是我现在拥有的正好相反的对象?
简单地使用!NOT运算符:
this.data = this.data.filter(item => !this.multipleSelectedIds.includes(item.id))
// ----------------------------------^
Run Code Online (Sandbox Code Playgroud)
由于上面进行了多次传递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))
Run Code Online (Sandbox Code Playgroud)
使用对象:
const ids = Object.create(null);
this.multipleSelectedIds.forEach(id => {
ids[id] = true;
});
this.data = this.data.filter(item => !ids[item.id])
Run Code Online (Sandbox Code Playgroud)
...但是你必须处理非常大的数组才能获得开销.
| 归档时间: |
|
| 查看次数: |
1015 次 |
| 最近记录: |