Задать вопрос
@YakovSpb

Как добавить в массив только те элементы, которых там ещё нет?

Есть массив arr:

[
  { id: "5jq", url: "https://cdn2.thecatapi.com/images/5jq.jpg", width: 320 },
  { id: "5qj", url: "https://cdn2.thecatapi.com/images/5qj.jpg", width: 480 }
]

Приходит похожий массив newArr. Как добавить в массив arr объекты из массива newArr, которых нет в arr по id?
  • Вопрос задан
  • 254 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Array.prototype.push.apply(
  arr,
  newArr.filter(n => !arr.some(m => m.id === n.id))
);

или

arr.splice(0, arr.length, ...arr
  .concat(newArr)
  .reduce((acc, n) => acc.set(n.id, acc.get(n.id) ?? n), new Map)
  .values()
);

или

newArr.forEach(function(n) {
  this.has(n.id) || (arr[arr.length] = n);
}, new Set(arr.map(n => n.id)));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы