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

NodeJS中如何找出不同数组中ID属性相同的对象?

找出两个数组中ID存在交集的对象(以Fridge数组的匹配项为准)

嘿,这个需求其实挺常见的,我给你两种实用的Node.js实现方案,刚好能得到你想要的结果:

方法一:用Set优化查询效率(推荐)

当数组元素比较多的时候,这种方法的性能会好很多,因为*Set的查询操作是O(1)*的,比反复遍历数组快得多:

const Items = [{"id": "10", "name": "milk"},{"id":"7", "name": "banana"},{"id":"47", "name": "cheese"},{"id":"6", "name":"carrot"}];
const Fridge = [{"id":"19", "name": "cheese"},{"id": "10", "name": "milk"},{"id":"43","name": "egg"}, {"id":"6", "name":"not a carrot"}];

// 先把Items数组里所有对象的id提取出来,存到Set里
const itemIdSet = new Set(Items.map(item => item.id));

// 过滤Fridge数组,只保留id在Set里的对象
const Output = Fridge.filter(fridgeItem => itemIdSet.has(fridgeItem.id));

console.log(Output);
// 输出:[{"id": "10", "name": "milk"},{"id":"6", "name":"not a carrot"}]

方法二:直接遍历判断(适合小数据量)

如果你的数组元素不多,也可以用更直观的写法,虽然性能不如Set,但代码简单易懂:

const Output = Fridge.filter(fridgeItem => 
  // 检查当前Fridge对象的id是否在Items数组里存在
  Items.some(item => item.id === fridgeItem.id)
);

补充说明

你示例里的cheese没出现在结果里是因为两个数组中cheese的id不一样哦——Items里的cheese id是47,而Fridge里的是19,所以不符合“id同时存在”的条件,这和你给出的预期输出是一致的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:04:42