Задать вопрос
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}];
  • Вопрос задан
  • 247 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const result = [];
for (const n of elements) {
  if (!used.some(m => m.id === n.id)) {
    result.push(n);
  }
}

или

const result = [];

COLLECT_OBJECTS:
for (let i = 0; i < elements.length; i++) {
  for (let j = 0; j < used.length; j++) {
    if (elements[i].id === used[j].id) {
      continue COLLECT_OBJECTS;
    }
  }
  result[result.length] = elements[i];
}

или

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

или

const result = (function get(ids, i, n = elements[i]) {
  return n
    ? [].concat(ids.includes(n.id) ? [] : n, get(ids, -~i))
    : [];
})(used.map(n => n.id), 0);

или

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???)))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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