如何在JavaScript中移除对象中的重复值
解决方法
方法一:直接删除指定重复键
如果你明确知道要移除的键(比如要保留i移除s),直接用delete操作符就能快速实现:
let obj = { T: 1, h: 1, i: 3, s: 3, t: 1, r: 1, n: 1, g: 1 }; // 保留i,移除s delete obj.s; // 若要保留s,移除i则执行:delete obj.i; console.log(obj); // 执行delete obj.s后输出:{ T: 1, h: 1, i: 3, t: 1, r: 1, n: 1, g: 1 }
方法二:动态处理特定值的重复
如果不知道具体重复的键,只需要处理值为3的重复项,可以通过遍历对象,保留第一个出现的目标值键,删除后续的:
let obj = { T: 1, h: 1, i: 3, s: 3, t: 1, r: 1, n: 1, g: 1 }; let targetCount = 0; for (const key in obj) { if (obj[key] === 3) { targetCount++; // 仅保留第一个值为3的键,删除后续的 if (targetCount > 1) { delete obj[key]; } } } console.log(obj); // 输出:{ T: 1, h: 1, i: 3, t: 1, r: 1, n: 1, g: 1 }
方法三:通用处理所有值的重复(保留首次出现的键值对)
如果需要自动处理对象中所有值重复的情况,只保留每个值第一次出现的键值对,可以用Set来跟踪已出现的值:
let obj = { T: 1, h: 1, i: 3, s: 3, t: 1, r: 1, n: 1, g: 1 }; const seenValues = new Set(); const uniqueObj = {}; for (const key in obj) { const value = obj[key]; if (!seenValues.has(value)) { seenValues.add(value); uniqueObj[key] = value; } } console.log(uniqueObj); // 输出:{ T: 1, i: 3 }
内容的提问来源于stack exchange,提问作者Ravindra Kumar
相关产品推荐
相关产品推荐

