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

JavaScript如何实现对象数组按name字段去重生成唯一元素数组

按name字段去重生成目标数组

你需要的是按对象的name属性做去重判断,丢弃name重复的项,最终输出仅包含name属性的唯一值数组,可参考以下实现:

方法1:基础遍历实现(性能最优,时间复杂度O(n))

用Set结构记录已经出现过的name值,遍历原数组时判断当前name是否已存在,不存在就推入结果数组:

let arr = [{id:1, name:'tert'},{id:2, name:'tety'},{id:3, name:'gfvc'},{id:8, name:'tert'}]
const nameSet = new Set()
const arrrslt = []

for (const item of arr) {
  if (!nameSet.has(item.name)) {
    nameSet.add(item.name)
    arrrslt.push({ name: item.name })
  }
}

运行后arrrslt的输出和你预期完全一致:[{ name:'tert'},{name:'tety'}, {name:'gfvc'}]

方法2:链式调用简洁写法

如果偏好函数式写法,可以用filter+map组合实现,逻辑和上面完全一致:

const nameSet = new Set()
const arrrslt = arr
  .filter(item => !nameSet.has(item.name) && nameSet.add(item.name))
  .map(item => ({ name: item.name }))

注意事项

  • 该实现默认保留第一次出现的name对应的项,后续同name的项会被直接过滤
  • 不建议用全对象序列化(比如JSON.stringify)的方式做去重,这种方式会受对象属性顺序、属性值类型影响,容易出现判断错误,明确按指定字段去重是最稳定的方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:54:19