JavaScript如何根据指定键值筛选对象数组
根据指定键的字符串值筛选对象数组的最优实现
针对提取数组中所有"Type":"Blue"对象的需求,JavaScript原生Array.prototype.filter()是综合可读性、性能、无依赖成本的最优方案,它是JS引擎内置的数组方法,执行效率优于手写遍历逻辑,语法简洁语义明确,是这类单条件筛选场景的行业标准实现。
实现代码
// 原始示例数据 const list = [ { "data": [{}], "Name": "1", "Type": "Blue" }, { "data": [{}], "Name": "2", "Type": "Red" }, { "data": [{}], "Name": "3", "Type": "Blue" } ]; // 筛选逻辑 const result = list.filter(item => item.Type === "Blue");
运行后result会返回所有Type值为Blue的对象,也就是示例中Name为1、3的两条数据。
实现说明
- 判断条件使用严格相等
===,避免隐式类型转换带来的误匹配,确保只有字符串值完全为Blue的项被选中 - 如果需要兼容数组项可能缺失Type属性的边界场景,可以把判断条件改为
item?.Type === "Blue",通过可选链操作符避免读取undefined属性抛出错误 - 该实现时间复杂度为O(n),和数组遍历的理论最优复杂度一致,无额外性能损耗
- 若项目中已全局引入Lodash等工具库,也可以使用
_.filter(list, { Type: "Blue" })实现同等效果,但无工具库依赖的场景下,原生方法是最优选择,不需要额外引入第三方代码。
内容的提问来源于stack exchange,提问作者user18241178
相关产品推荐
相关产品推荐

