栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

过滤和删除数组中的过滤元素

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

过滤和删除数组中的过滤元素

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);

所以一定是这样。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436623.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号