使用ES6根据属性值过滤对象数据的实现方案
ES6对象属性过滤实现方案
你可以通过Object.values()结合数组方法快速实现需求:
- 如果只需要获取第一个符合条件的子对象,使用
Array.find() - 如果需要获取所有符合条件的子对象,使用
Array.filter()
基础实现(适配你给出的筛选场景)
const source = { A: { value1: 4, value2: 2, value3: 5 }, B: { value1: 2, value2: 5, value3: 8 } }; // 返回第一个匹配的子对象 const target = Object.values(source).find(item => item.value1 === 4 && item.value2 === 2); // 输出结果:{ value1: 4, value2: 2, value3: 5 }
通用封装(支持动态传入任意筛选条件)
如果后续筛选条件会变化,可以封装为通用方法,不用修改判断逻辑:
function filterByCondition(sourceObj, condition) { return Object.values(sourceObj).filter(item => Object.entries(condition).every(([key, expectVal]) => item[key] === expectVal) ); } // 调用示例,支持任意多条件组合 const result = filterByCondition(source, { value1: 4, value2: 2 }); // 输出所有匹配的子对象数组:[ { value1: 4, value2: 2, value3: 5 } ]
内容的提问来源于stack exchange,提问作者Anand Somani
相关产品推荐
相关产品推荐

