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

Как отфильтровать массив с объектами?

Есть массив вида
['1', `2`, `3`, `4`, `5`]
А так же есть массив c объектами такого вида
[
 {
    number: '3',
    name: 'Vasja',
 },
 {
    number: '5',
    name: 'Igor',
 }
]


Нужно в итоге получить массив такой
['1', `2`, `4`]

То есть массив со всеми номерами, с которыми нет объектов. Спасибо
  • Вопрос задан
  • 141 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const result = [];
for (const n of numbers) {
  if (!objects.some(m => m.number === n)) {
    result.push(n);
  }
}

или

const result = [];

COLLECT_NUMBERS:
for (let i = 0; i < numbers.length; i++) {
  for (let j = 0; j < objects.length; j++) {
    if (objects[j].number === numbers[i]) {
      continue COLLECT_NUMBERS;
    }
  }
  result[result.length] = numbers[i];
}

или

const result = numbers.filter(function(n) {
  return !this.has(n);
}, new Set(objects.map(n => n.number)));

или

const result = (function get(exclude, i, n = numbers[--i]) {
  return i >= 0
    ? get(exclude, i).concat(~exclude.indexOf(n) ? [] : n)
    : [];
})(objects.map(n => n.number), numbers.length);

или

const result = [...objects.reduce(
  (acc, n) => (acc.delete(n.number), acc),
  new Set(numbers)
)];
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
1. Свести многомерный массив к одномерному
2. Отфильтровать первый, проверяя наличие значений во втором.

let arr2_plain = arr2.map(item => item.number);
let result = arr1.filter(item => !arr2_plain.includes(item));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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