Search code examples
javascripttypescriptlodash

how to return matched property value from array of object


I have below array,

var abc = [
 {name: 'name1', id: '1', value: 1},
 {name: 'name2', id: '2', value: 3},
 {name: 'name3', id: '3', value: 2},
 {name: 'name4', id: '4', value: 2}
];

i want to return,

var abc = [
 {name: 'name3', id: '3', value: 2},
 {name: 'name4', id: '4', value: 2}
];

because both object has a same value. How I can achieve this using lodash or javascript.


Solution

  • Use filter and findIndex.

    var abc = [
     {name: 'name1', id: '1', value: 1},
     {name: 'name2', id: '2', value: 3},
     {name: 'name3', id: '3', value: 2},
     {name: 'name4', id: '4', value: 2}
    ];
    
    const res = abc.filter(obj => {
      return abc.findIndex(obj2 => obj2.id !== obj.id && obj2.value === obj.value) > -1;
    });
    
    console.log(res);