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

JavaScript实现对象数组按属性去重 同属性值对象仅保留一次

JS数组按指定属性去重简洁实现

需求说明

给定对象数组,要求按code属性去重,相同code值的对象仅保留第一次出现的条目,最终返回去重后的新数组。
原始数组:

[
  {name: "Joske", code: "IEDDK"},
  {name: "Mieke", code: "IEDDK"},
  {name: "Jan", code: "IEDDK"},
  {name: "Test", code: "IsxJK"},
  {name: "Koen", code: "IsxJK"},
]

期望输出:

[
  {name: "Joske", code: "IEDDK"},
  {name: "Test", code: "IsxJK"},
]

实现代码

用Set做已出现值的存储,配合数组原生filter方法实现,逻辑直白无冗余:

const uniqueByCode = (arr) => {
  const seen = new Set();
  return arr.filter(item => {
    if (seen.has(item.code)) return false;
    seen.add(item.code);
    return true;
  });
};

方案特点

  • 时间复杂度O(n),仅需一次遍历即可完成去重,性能优异
  • 逻辑可读性强:Set专门负责记录已经出现过的code值,filter只做元素筛选,职责拆分清晰
  • 不会修改原始数组,无副作用
  • 扩展性好,如果后续需要更换去重依据的属性,仅需修改读取的属性名即可,比如要按name去重就把item.code换成item.name

内容的提问来源于stack exchange,提问作者stijn.aerts

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:06:34