You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于ID匹配从两个对象数组中拆分出更新和新增数据集

问题原因

你使用的map方法会返回与原数组长度完全一致的新数组,当ID匹配不到时对应的位置会返回undefined,不会自动过滤不符合条件的项,因此无法实现需求。

正确实现

首先建议先提取currentData的ID存入Set结构,相比每次遍历查找可以大幅提升匹配效率,尤其适合数据量较大的场景:

const currentIds = new Set(currentData.map(item => item.ID));

方案1:两次filter拆分(代码最简洁)

// ID存在于currentData的项存入updateData
const updateData = inputData.filter(row => currentIds.has(row.ID));
// ID不存在于currentData的项存入newData
const newData = inputData.filter(row => !currentIds.has(row.ID));

方案2:单次reduce拆分(性能更优)

只需要遍历inputData一次即可得到两个结果数组:

const { updateData, newData } = inputData.reduce((result, currentRow) => {
  currentIds.has(currentRow.ID) 
    ? result.updateData.push(currentRow)
    : result.newData.push(currentRow);
  return result;
}, { updateData: [], newData: [] });

结果验证

使用你提供的示例数据运行后,updateData会包含ID为2、3的对象,newData会包含ID为4的对象,完全符合预期。


内容的提问来源于stack exchange,提问作者SudoGaron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:48:03