-2

I have a array something like this.

const arr = [
{id: '1', name: 'manager'},
{id: '5', name: 'owner'},
{id: '2', name: 'member'},
{id: '2', name: 'owner'},
{id: '3', name: 'manager'},
{id: '2', name: 'member'},
{id: '3', name: 'owner'},
{id: '4', name: 'owner'},
{id: '4', name: 'member'},
{id: '5', name: 'manager'},
];

I'd like to check duplicate objects by id and remove old objects and need array like this.

output :

const arr = [
{id: '1', name: 'manager'},
{id: '2', name: 'member'},
{id: '3', name: 'owner'},
{id: '4', name: 'member'},
{id: '5', name: 'manager'},
];

Hope you got my point.

  • how do u decide which duplicate to remove – cmgchess Mar 15 '22 at 17:43
  • 2
    No attempt? No problem description about your work? – trincot Mar 15 '22 at 17:43
  • would like to remove previous index's and update with current index. Like "id : 2", I want last object of "id : 2" and remove previous 2 objects where "id : 2". – Silent Storm Mar 15 '22 at 17:57
  • Why output does not have `{id: '4', name: 'owner'}`? You should clarify this by editing the question. And **important**: you should add your attempt! – trincot Mar 15 '22 at 18:03
  • Did you attempt anything? suggest posting your attempt solution here – Sooraj Jose Mar 15 '22 at 18:06
  • Some helpful functions [Array.prototype.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce), [Object.entries](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries), [Array.prototype.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) – jabaa Mar 15 '22 at 18:32
  • maybe reverse the array and use something like https://stackoverflow.com/a/36744732/13583510 so that only the last duplicate with the same id remains – cmgchess Mar 15 '22 at 19:02

2 Answers2

0

One liner, if you don't mind.

const arr = [{"id":"1","name":"manager"},{"id":"5","name":"owner"},{"id":"2","name":"member"},{"id":"2","name":"owner"},{"id":"3","name":"manager"},{"id":"2","name":"member"},{"id":"3","name":"owner"},{"id":"4","name":"owner"},{"id":"4","name":"member"},{"id":"5","name":"manager"}];

const result = Object.values(arr.reduce((acc, item) => ({...acc, [item.id]: item}), {}));

console.log(result);
.as-console-wrapper{min-height: 100%!important; top: 0}
A1exandr Belan
  • 4,442
  • 3
  • 26
  • 48
0
     const arr = [
    {id: '1', name: 'manager'},
    {id: '5', name: 'owner'},
    {id: '2', name: 'member'},
    {id: '2', name: 'owner'},
    {id: '3', name: 'manager'},
    {id: '2', name: 'member'},
    {id: '3', name: 'owner'},
    {id: '4', name: 'owner'},
    {id: '4', name: 'member'},
    {id: '5', name: 'manager'},
    ];
    
    function removeDuplicateObjectFromArray(array, key) {
      let check = new Set();
      return array.filter(obj => {
         return  !check.has(obj[key]) && check.add(obj[key])
      });
    }
     
    console.log(removeDuplicateObjectFromArray(arr, 'name'));
    enter code here

output : [
  { id: '1', name: 'manager' },
  { id: '5', name: 'owner' },
  { id: '2', name: 'member' }
]
  • 1
    As it’s currently written, your answer is unclear. Please [edit] to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Albert Logic Einstein Nov 27 '22 at 15:02