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

JS中如何提取对象数组属性值并去重?ES6方法失效疑问

为什么用Set去重对象数组没生效?ES6解决办法

原因分析

Set的去重逻辑是基于**严格相等(===)**判断的。你数组里的每个元素都是独立的对象,哪怕两个对象的id值相同,它们的内存引用地址也不一样,所以Set会把这些对象都判定为不同元素,去重自然无效。

ES6解决办法

1. 仅提取去重后的id数组

先通过map把所有对象的id提取成纯字符串数组,再用Set去重,最后展开为数组:

const array = [
    { id: "LAX" },
    { id: "BAS" },
    { id: "TES" },
    { id: "LAX" },
    { id: "LAX" },
    { id: "ATL" },
    { id: "BNA" },
    { id: "LAX" },
];

const uniqueIds = [...new Set(array.map(item => item.id))];
// 结果:["LAX", "BAS", "TES", "ATL", "BNA"]

2. 保留去重后的完整对象(每个id仅保留第一个出现的对象)

如果需要保留对象结构,可借助Map的键唯一性特性实现:

const uniqueObjects = [...new Map(array.map(item => [item.id, item])).values()];
// 结果:[{id: "LAX"}, {id: "BAS"}, {id: "TES"}, {id: "ATL"}, {id: "BNA"}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:10:23