javascript中唯一的对象

时间:2019-02-19 11:45:21

标签: javascript

是否有可能使用与下面类似的功能,该功能将返回两个属性,而无需创建第二个数组。 第二个属性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'
 }]

2 个答案:

答案 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创建一个键对象。键是GroupName的组合,可让您检查缩小的对象中是否已包含值。

最后,我使用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);

通过检查两者 GroupName

,这将为您提供独特的对象阵列