是否有可能使用与下面类似的功能,该功能将返回两个属性,而无需创建第二个数组。 第二个属性Name将始终相同。
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'
}]
答案 0 :(得分:0)
您可以使用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)
答案 1 :(得分:0)
如果您试图从数组中删除重复的对象并获得唯一对象的数组,则可以使用.reduce
。在这里,我使用.reduce
创建一个键对象。键是Group
和Name
的组合,可让您检查缩小的对象中是否已包含值。
最后,我使用Object.keys
来获取存储为每个组合值的唯一对象。
请参见下面的示例:
'use strict'
const data = [{
Group: 'A',
Name: 'SEAN'
}, {
Group: 'B',
Name: 'PAUL'
}, {
Group: 'A',
Name: 'SEAN'
}, {
Group: 'B',
Name: 'PAUL'
}];
let unique = Object.values(data.reduce((acc, {Group, Name}) => {
const key = `${Group}:${Name}`;
!(key in acc) && (acc[key] = {Group, Name});
return acc;
}, {}));
console.log(unique);
通过检查两者 Group
和Name