JavaScript按key值合并两个对象数组的需求与问题排查
解决JavaScript对象数组合并过滤问题
实现思路
- 先提取
filterdata中**text不等于'do_not_import'**的所有对象的value,存入集合(提升查询效率) - 过滤
newdata,移除value存在于上述集合中的对象 - 合并
filterdata和过滤后的newdata
代码实现
// 提取需要排除的value集合 const excludeValues = new Set( filterdata .filter(item => item.text !== 'do_not_import') .map(item => item.value) ); // 过滤newdata,保留不在排除列表中的对象 const cleanedNewData = newdata.filter(item => !excludeValues.has(item.value)); // 合并得到最终结果 const mergedResult = [...filterdata, ...cleanedNewData];
示例验证
假设测试数据:
const filterdata = [ { value: '1', text: '选项1' }, { value: '2', text: 'do_not_import' }, { value: '3', text: '选项3' } ]; const newdata = [ { value: '1', text: '新选项1' }, { value: '4', text: '新选项4' }, { value: '3', text: '新选项3' } ];
运行代码后,mergedResult的结果为:
[ { value: '1', text: '选项1' }, { value: '2', text: 'do_not_import' }, { value: '3', text: '选项3' }, { value: '4', text: '新选项4' } ]
完全符合需求:newdata中value为1和3的对象被移除,剩余的4保留,最终和filterdata合并。
内容的提问来源于stack exchange,提问作者Shibbir
相关产品推荐
相关产品推荐

