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

如何按given_name、family_name双字段对用户对象数组去重留首项

用户对象数组按姓名字段去重实现方案

去重规则

  • 当多个用户对象的given_name和family_name字段值同时匹配时,判定为同一用户
  • 仅保留数组中首次出现的用户对象,其余重复项全部删除

代码实现(JavaScript)

时间复杂度O(n),仅需遍历一次数组即可完成去重:

function deduplicateUserArray(userArr) {
  const recordedNameKeys = new Set()
  return userArr.filter(user => {
    // 拼接两个字段生成唯一标识,使用罕见分隔符避免字段内容冲突,也可替换为JSON.stringify([user.given_name, user.family_name])
    const uniqueKey = `${user.given_name}###${user.family_name}`
    if (recordedNameKeys.has(uniqueKey)) return false
    recordedNameKeys.add(uniqueKey)
    return true
  })
}

测试验证

输入示例

const input = [
  {
    given_name: 'Aha',
    family_name: 'Yes',
    email: 'Yes@gmail.com',
  },
  {
    given_name: 'Testname',
    family_name: 'Test',
    email: 'Testname@gmail.com',
  },
  {
    given_name: 'Hans',
    family_name: 'Test',
    email: 'Testname@gmail.com',
  },
  {
    given_name: 'Aha',
    family_name: 'Yes',
    email: 'Yesassss@gmail.com',
  }
]

执行调用

const output = deduplicateUserArray(input)

输出结果

[
  {
    given_name: 'Aha',
    family_name: 'Yes',
    email: 'Yes@gmail.com',
  },
  {
    given_name: 'Testname',
    family_name: 'Test',
    email: 'Testname@gmail.com',
  },
  {
    given_name: 'Hans',
    family_name: 'Test',
    email: 'Testname@gmail.com',
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:09:00