javascript - 删除包含重复属性的嵌套对象
问题描述
我这里有一个嵌套对象
{ people: {
bob: {
city: 'florida',
phone: '561-482-2234'
},
jen: {
city: 'florida',
phone: '407-382-3883'
},
kim: {
city: 'new york',
phone: '607-321-3003'
}
}}
我需要过滤这个对象,以便不存在重复的城市 - 最终结果将是一个包含 bob & kim 的对象。我不关心订单或两个佛罗里达人中的哪一个留在对象中,所以它也可以是 jen & kim
我当前的实现包含一个 for 循环,该循环遍历人员、存储临时键并在名称与临时键匹配时删除嵌套对象。我觉得这是一个漫长而漫长的解决方案
有没有 ES6 方法可以做到这一点?
解决方案
您可以使用 a 过滤键Set
并删除此键。
var a = { people: { bob: { city: 'florida', phone: '561-482-2234' }, jen: { city: 'florida', phone: '407-382-3883' }, kim: { city: 'new york', phone: '607-321-3003' } } };
Object
.keys(a.people)
.filter((s => k => s.has(a.people[k].city) || !s.add(a.people[k].city))(new Set))
.forEach(k => { delete a.people[k]; });
console.log(a);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- c# - Windows 10 上的 DataGridView 中的字体大小无效
- c# - c# winform项目中使用mysql计算datediff
- reporting-services - SSRS:在中间列分组级别以及行组内的位置矩阵单元
- bazel - Bazel -- 获取另一个目标宏的参数
- javascript - 不活动时触发 Google Chrome 扩展操作的脚本
- flutter - Flutter SharedPreferences 值在应用程序开始时提供给 Provider
- r - 是否可以访问 R 中绘制的字符串的字形轮廓坐标?
- c - 将 sizeof 与具有固定长度数组的结构一起使用
- c# - 使用正则表达式获取 HTML 标签集
- java - 如何为循环“增加”变量名