如何按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
相关产品推荐
相关产品推荐

