lavezzi1
@lavezzi1

Как найти разницу двух массивов объектов?

Как получить новый массив с элементами которых нет в массиве used?

const elements = [{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}, {id: 6}];
const used = [{id: 2}, {id: 3}, {id: 6}];
  • Вопрос задан
  • 219 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const result = elements.filter(n => !used.some(m => m.id === n.id));

или

const result = elements.filter(((ids, n) => !ids.includes(n.id)).bind(null, used.map(n => n.id)));

или

const result = elements.filter(function(n) {
  return !this.has(n.id);
}, new Set(used.map(n => n.id)));

или

const result = Object.values(used.reduce(
  (acc, n) => (delete acc[n.id], acc),
  elements.reduce((acc, n) => (acc[n.id] = n, acc), {})
));

или

const result = [...used.reduce(
  (acc, n) => (acc.delete(n.id), acc),
  new Map(elements.map(n => [ n.id, n ]))
).values()];
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alex-1917
@alex-1917
Если ответ помог, отметь решением
indexOf + while???)))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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