javascript - javascript中只有唯一的对象
问题描述
这是否可以使用与下面类似的功能,该功能将返回两个属性而无需创建第二个数组。第二个属性名称将始终相同。
const data = [{
Group: 'A',
Name: 'SEAN'
}, {
Group: 'B',
Name: 'PAUL'
}, {
Group: 'A',
Name: 'SEAN'
}, {
Group: 'B',
Name: 'PAUL'
}];
let unique = [...new Set(data.map(item => item.Group))];
console.log(unique);
return ["A", "B"]
https://codepen.io/vlad-bezden/pen/OMEXJz
我正在尝试返回
[{
Group: 'A',
Name: 'SEAN'
},
{
Group: 'B',
Name: 'PAUL'
}]
解决方案
你可以使用一个forEach
这里的想法是included
用来跟踪添加到op
. 然后我们检查该组是否已经在included
对象中,如果是我们什么都不做,否则我们将它添加到op
.
const data = [{Group: 'A', Name: 'SEAN'}, { Group: 'B', Name: 'PAUL'}, { Group: 'A',Name: 'SEAN'}, {Group: 'B',Name: 'PAUL'}];
let op = []
let included = {}
data.forEach((e)=>{
if( !included[e.Group] ){
op.push(e)
included[e.Group] = true
}
})
console.log(op)
推荐阅读
- arrays - 我如何找到两张牌的总和?
- node.js - 监控和刷新 PubSub 批处理发布者队列
- go - Is it safe to write files in mode os.O_APPEND|os.O_WRONLY?
- file - 如何将不同类型的数据存储在一个文件中
- tree - 使 C 不平衡的两个子树是什么?
- html - 链接内的 HTML
- django - “profile_picture”属性没有与之关联的文件
- python - 球拍:双冒号 (::) 是什么意思?
- ios - iPhoneX:将tableview一直延伸到显示器底部(非安全区域)
- java - 将字符串列表附加到 Android 外部存储中的文本文件末尾