Объединить два массива объектов на основе разных ключей в один в Angular 8 - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть два массива объектов Arr1 и Arr2. Я хочу объединить эти два на основе их «id». Если у Arr1 нет объекта с таким же идентификатором, как у Arr2, он должен поместить sh этот объектный узел в Arr1. Как мне этого добиться?

Arr1 =
[
  {
    'id'    : 101,
    'name'  : "ABC"
  },
  {
    'id'    : 202,
    'name'  : "DEF"
  }
];

Arr2 =
[
  {
    'id'    : 303,
    'name'  : "PQR"
  },
  {
    'id'    : 404,
    'name'  : "XYZ"
  },
  {
    'id'    : 202,
    'name'  : "DEF"
  }
];

Arr1 =
[
  {
    'id'    : 101,
    'name'  : "ABC"
  },
  {
    'id'    : 202,
    'name'  : "DEF"
  },
  {
    'id'    : 303,
    'name'  : "PQR"
  },
  {
    'id'    : 404,
    'name'  : "XYZ"
  }
];

1 Ответ

0 голосов
/ 11 апреля 2020

L oop через Arr2 с использованием forEach & внутри обратного вызова используйте findIndex, чтобы проверить, присутствует ли текущий элемент в итерации в Arr1 или нет. findIndex вернет index, если элемент присутствует в массиве, или -1, если его нет. Если findIndex равен -1, то pu sh этот элемент из второго массива в Arr1

let Arr1 = [{
    'id': 101,
    'name': "ABC"
  },
  {
    'id': 202,
    'name': "DEF"
  }
];

const Arr2 = [{
    'id': 303,
    'name': "PQR"
  },
  {
    'id': 404,
    'name': "XYZ"
  },
  {
    'id': 202,
    'name': "DEF"
  }
];



Arr2.forEach((item) => {
  const isPresentInArry1 = Arr1.findIndex(elem => elem.id === item.id);
  if (isPresentInArry1 === -1) {
    Arr1.push(item)
  }
});

console.log(Arr1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...