You need to enable JavaScript to run this app. 如何使用JavaScript去除两个数组合并后empId相同的重复记录
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript去除两个数组合并后empId相同的重复记录

问题根因

你现有代码无法去重的核心原因是:Set 是基于值相等做去重,而数组中的员工数据是对象(引用类型),即使两个对象的所有属性值完全相同,只要是不同的引用地址,Set 就会判定为两个不同的元素,无法按empid字段的规则去重。

解决代码

可以用Map结构来实现按指定字段去重,将empid作为Map的唯一键,最终提取Map的所有值即可得到去重后的数组:

var array1 = [{"empid":"10043","empsalary":"10000","empaddress":"test1"},
    {"empid":"10044","empsalary":"20000","empaddress":"test2"},
    {"empid":"10045","empsalary":"30000","empaddress":"test3"},
    {"empid":"10046","empsalary":"40000","empaddress":"test4"},
    {"empid":"10047","empsalary":"50000","empaddress":"test5"},
]

var array2 = [{"empid":"10043","empsalary":"10000","empaddress":"test1"},
    {"empid":"10044","empsalary":"20000","empaddress":"test2"},
    {"empid":"10048","empsalary":"30000","empaddress":"test3"},
    {"empid":"10049","empsalary":"40000","empaddress":"test4"},
    {"empid":"10041","empsalary":"50000","empaddress":"test5"},
]

// 合并两个数组后存入Map,empid作为唯一键,重复empid的元素会被后出现的覆盖
const tempMap = new Map()
;[...array1, ...array2].forEach(item => {
  tempMap.set(item.empid, item)
})
// 提取Map的所有值得到最终结果
const array3 = Array.from(tempMap.values())

console.log(JSON.stringify(array3, null, 2))

运行上述代码输出结果和你期望的效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 20:06:02