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

Как из массива объектов извлечь элементы с определёнными id?

Есть два массива, первый с id: let arr = [4, 5, 2];, второй с объектами:

let people = [
    {
        id: 1,
        firstName: 'Alexey',
    },
    {
        id: 2,
        firstName: 'Slava'
    },
    {
        id: 3,
        firstName: 'Vlad'
    },
    {
        id: 4,
        firstName: 'Andrey',
    },
    {
        id: 5,
        firstName: 'Mikhail'
    },
    {
        id: 6,
        firstName: 'Stepan'
    }
]

Надо из второго достать элементы, чьи id находятся в первом:

[
    {
        id: 2,
        firstName: 'Slava'
    },
    {
        id: 4,
        firstName: 'Andrey',
    },
    {
        id: 5,
        firstName: 'Mikhail'
    }
]
  • Вопрос задан
  • 189 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 5
0xD34F
@0xD34F Куратор тега JavaScript
const result = people.filter(function(n) {
  return this.has(n.id);
}, new Set(arr));

или

const result = [];
for (const n of people) {
  for (const m of arr) {
    if (m === n.id) {
      result.push(n);
      break;
    }
  }
}

или

const result = (function get(i, n = people[i]) {
  return n
    ? [].concat(arr.includes(n.id) ? n : [], get(-~i))
    : [];
})(0);
Ответ написан
Комментировать
link_web
@link_web
Magento, Laravel, Zend, Shopify, Prestashop, WP
Ответ написан
Комментировать
@iMpLicEMoN
*текст ниже сгенерирован*
const result = arr.filter(element=> *тут условие (false-отсеет true-пропустит)*)

В итоге результирующий массив без отсеяных элементов.
Ответ написан
Комментировать
KevlarBeaver
@KevlarBeaver
Разработчик
people.filter(item => arr.find(x => x === item.id));
Ответ написан
Комментировать
@vjachet
people.filter(person => ~arr.indexOf(person.id))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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