Få skillnad mellan två arrayer av objekt med ES6 eller TypeScript


Jag har följande arrayer:

  arr1 = [{
      id: 1,
      name: 'Diego',
      age: 23
  }, {
      id: 2,
      name: 'Brian',
      age: 18
  }]

  arr2 = [{
      id: 1,
      name: 'Diego',
      age: 23
  }, {
      id: 2,
      name: 'Brian',
      age: 18
  }, {
      id: 3,
      name: 'Pikachu',
      age: 88
  }]

Jag behöver få skillnaden mellan dessa två arrayer, det förväntade resultatet är:

arr3 [{id:3, name: 'Pikachu', age: 88}]

Hur löser jag det här problemet med ES6 eller TypeScript?

Jag försökte använda SET, men det fungerade inte.

Svar #1

Någonting sådant här kanske:

let ids1 = arr1.map(item => item.id);
let ids2 = arr2.map(item => item.id);

let diff = ids1.map((id, index) => {
        if (ids2.indexOf(id) < 0) {
            return arr1[index];
        }
    }).concat(ids2.map((id, index) => {
        if (ids1.indexOf(id) < 0) {
            return arr2[index];
        }
    })).filter(item => item != undefined);

(kod i lekplats)