javascript - 在Javascript中删除对象中具有相同值(即重复项)的键/值对
问题描述
我目前正在学习 JS,我需要一种方法来返回一个与给定对象相似但删除具有相同值(即重复)的键/值对的对象。
所以如果我有一个给定的对象 { a: 1, b: 2, c: 3, d: 1 }:
它应该返回:
{b:2,c:3}
类似地,如果对象中的所有键值对都有不同的值,则返回的对象将与给定对象简单地相同。
我想我已经接近解决它了,但我不知道我的代码有什么问题。任何帮助将非常感激!
const noDuplicateValues = (obj) => {
let result = {};
let keys = Object.keys(obj);
let duplicate;
for(let i = 0; i < keys.length; i++) {
for(let j = i +1; j < keys.length; j++) {
duplicate = false;
if(obj[keys[i]] === obj[keys[j]]) {
duplicate = true;
}
}
if(!duplicate) {
result[keys[i]] = obj[keys[i]];
}
}
return result;
}
解决方案
我会计算每个值的出现次数,然后通过给定条目的值是否只出现一次来过滤对象的条目:
const obj = { a: 1, b: 2, c: 3, d: 1 };
const occurrences = new Map();
for (const val of Object.values(obj)) {
occurrences.set(val, (occurrences.get(val) || 0) + 1);
}
const newObj = Object.fromEntries(
Object.entries(obj)
.filter(([, val]) => occurrences.get(val) === 1)
);
console.log(newObj);
推荐阅读
- php - php 8.0 项目,Xampp apache 和 mysql 意外关闭
- excel - 在vba和压缩中将密码添加到csv
- vue.js - 在 vue js 中处理复杂的路由器视图
- ios14 - 在 iOS 14 中,当权限为“选定的照片”时,从图库中选择图像时,图像选择器不显示图像
- list - haskell 列表中的第二大元素
- regex - 如何在第 n 个出现配置单元之前进行 regexp_extract
- java - 如何在数组中打印选定的名称?
- python - 将多维数组的字符串转换为numpy数组
- ios - AFnetworking 3 或 4 GET ResponseObject 如何拥有 responseString 和 ResponseData
- r - 使用登录数据的滞后日期计算登录之间的时间