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

如何对比字段不同的对象数组,新增isPresent字段标识公共元素

实现方案

核心思路

先把obj1中所有的name值提取为Set集合,利用Set的O(1)查询效率提升匹配速度,之后遍历obj2的每一项,判断当前项的email是否存在于上述Set中,给每一项新增isPresent字段赋值判断结果即可。

JavaScript 代码实现

const obj1 = [
  {keyID: 'c71cc89335565241f59ac9bb9da162a3ddf4a6b483bdc06dd82b9275898ba5ee', name: 'user1@mail.com'},
  {keyID: '34051d2554ab20b0d24c2c39946d96da7e07508e7a8546bc2df299601dcbff05', name: 'user2@mail.com'}
];
const obj2 = [
  {id: 19, email: 'user4@mail.com', other_field: false},
  {id: 221, email: 'user3@mail.com', other_field: false},
  {id: 13, email: 'user2@mail.com', other_field: false},
  {id: 2, email: 'user1@mail.com', other_field: true}
];

// 提取obj1的name生成集合,用于快速匹配
const nameSet = new Set(obj1.map(item => item.name));
// 遍历obj2生成目标结果
const result = obj2.map(item => {
  return {
    ...item,
    isPresent: nameSet.has(item.email)
  }
});

补充说明

当前代码采用对象扩展运算符做浅拷贝,完全适配你给出的平层字段结构,不会修改原obj2的内容。如果obj2包含深层嵌套字段,把...item替换为对应深拷贝逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:36:00