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

Как исключить обьекты из массива, если они есть в другом массиве?

Repl Link

Вот к примеру как создать новый массив в result в котором будут обьекты из obj1 с ID 4 и 5.
То есть обьекты с ID 1, 2, 3( которые написаны в массиве arr1) не будут в новой выборке.
Как это сделать максимально профессионально ?
  • Вопрос задан
  • 177 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const result = [];
for (const n of objects) {
  if (!ids.includes(n.id)) {
    result.push(n);
  }
}

или

const result = [];

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

или

const result = objects.filter(function(n) {
  return !this.has(n.id);
}, new Set(ids));

или

const result = (function get(i, n = objects[i]) {
  return n
    ? [].concat(~ids.indexOf(n.id) ? [] : n, get(-~i))
    : [];
})(0);

или

const result = [...ids.reduce(
  (acc, n) => (acc.delete(n), acc),
  new Map(objects.map(n => [ n.id, n ]))
).values()];
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
HunteR-VRX
@HunteR-VRX
Помешанный на развитии
Необходимы две вещи:
1. Использование цикла for (forEach), в теле которого, условный оператор If
2. Использование метода slice()
Ответ написан
Комментировать
romanko_vn
@romanko_vn
var array1 = [1, 2, 3, 4];
var array2 = [1, 3, 4];

var diff = array1.concat(array2).filter(function (e, i, array) {
    return array.indexOf(e) === array.lastIndexOf(e);
});

console.log(diff);
// [2]
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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