该
Array.prototype.filter()方法不仅用于收集元素集,而且还用于收集元素集。如果您想通过评估条件来获得一项,那么您还有其他三种选择。
Array.prototype.indexOf(),
Array.prototype.findIndex()并
Array.prototype.find()因此只有当你想对多个项目的操作,你应该考虑使用过滤功能。就需要完成的工作而言,没有一个答案是完整的。他们使用过滤器功能隔离一个集合(在本示例中只是一个项目),但是他们没有显示如何摆脱整个集合。好吧,让我们澄清一下。
如果您只想查找和删除数组中的一项,则应像这样完成
var a = [{name:'tc_001'}, {name:'tc_002'}, {name:'tc_003'}];a.splice(a.findIndex(e => e.name === "tc_001"),1);console.log(a);但是,由于您提到的“特定元素”是复数形式,因此您将需要收集一组选定的项目,并对集合中的每个元素逐个进行上述工作。因此,正确的方法将是。
var a = [{name:'tc_001'}, {name:'tc_002'}, {name:'tc_003'}], b = a.filter(e => e.name === "tc_001");b.forEach(f => a.splice(a.findIndex(e => e.name === f.name),1));console.log(a);无论您选择的列表中有多少个元素,这都可以完成您的工作。但是我相信,尽管这看起来合乎逻辑,但确实做了大量的工作。首先过滤,然后对每个过滤的元素进行索引搜索。尽管我知道findIndex太快了,但我希望这一结果会明显变慢,特别是对于大型数组。让我们找到一个o(n)解决方案。干得好
var a = [{name:'tc_001'}, {name:'tc_002'}, {name:'tc_003'}]; a = a.reduce((p,c) => (c.name !== "tc_001" && p.push(c),p),[]);console.log(a);所以一定是这样。



