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

JS如何筛选出id不在另一对象数组中出现的对应name值

代码问题说明

你原先的写法存在两处核心错误:

  • 循环逻辑中每次都会覆盖results变量,最终仅会保留object1最后一项的遍历结果
  • 过滤对象错误:你对object2执行过滤操作,但需求是从object1中筛选符合条件的元素

实现方案

推荐提前提取object2的所有id存入Set,后续查找效率为O(1),适合各种数据量场景:

// 提取object2的所有id
const obj2IdSet = new Set(object2.map(item => item.id));
// 先过滤id不匹配的object1元素,再提取对应的name值
const targetNames = object1
  .filter(item => !obj2IdSet.has(item.id))
  .map(item => item.name);

针对你给出的示例数据,最终targetNames的输出结果为['name1', 'name3'],符合需求。

如果数据量很小,也可以不用提前提取Set,直接用some方法判断:

const targetNames = object1
  .filter(item => !object2.some(obj2Item => obj2Item.id === item.id))
  .map(item => item.name);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:36:06