Finding distinct object in array by es6

Viewed 1908

I have an array like below

const data = [
    {
        name:'AAAA',
        group: 'A',
        age:10
    },
    {
        name:'ABCD',
        group: 'A',
        age:10
    },
    {
        name:'DJSHDJH',
        group: 'B',
        age:15
    },
    {
        name:'FJHF',
        group: 'B',
        age:20
    }
]

I want to find distinct data by group and age by es6

expected result

[
    {
        group: 'A',
        age: 10
    },
    {
        group: 'B',
        age: 15
    },
    {
        group: 'B',
        age: 20
    }
]

I tried using [... new Set(data.map(x => {x.group, g.age}))] but no chance

I know how to loop through data and find unique values, but I want to use es6 functions

3 Answers

Another way of doing this, more readable but longer way is:

var filteredData = [];
data.forEach((item)=>{
    if(!filteredData.some(x=>x.group === item.group && x.age === item.age)){
        filteredData.push(item);
    }
});

// then you can change your result array if you want by using map
var result = filteredData.map(x=>{name:x.name,age:x.age});
Related