如何根据另一个对象的键值过滤数据对象?附代码示例
按选中选项过滤数据对象
可以通过遍历数据对象的键,结合Array.filter()和Array.includes()实现过滤逻辑,只保留selectedOptions中指定key的项:
const data = { names: [ { key: 1, name: 'Marek' }, { key: 2, name: 'Marek 2' }, { key: 3, name: 'Marek 3' }, { key: 4, name: 'Marek 4' }, ], ages: [ { key: 1, age: 14 }, { key: 2, age: 11 }, { key: 3, age: 17 }, { key: 4, age: 22 }, { key: 5, age: 31 }, ], }; const selectedOptions = { names: [1, 2], ages: [4], }; const showResults = () => { const filteredData = {}; // 遍历数据的每个分类键 Object.keys(data).forEach(key => { // 获取对应分类的选中key列表,默认空数组避免报错 const selectedKeys = selectedOptions[key] || []; // 过滤出key在选中列表中的项 filteredData[key] = data[key].filter(item => selectedKeys.includes(item.key)); }); return filteredData; }; // 执行函数得到过滤结果 const filteredData = showResults();
执行后得到的filteredData结果如下:
const filteredData = { names: [ { key: 1, name: 'Marek' }, { key: 2, name: 'Marek 2' }, ], ages: [ { key: 4, age: 22 }, ], };
内容的提问来源于stack exchange,提问作者Marek Marek
相关产品推荐
相关产品推荐

