@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'
    }
]
  • Вопрос задан
  • 142 просмотра
Решения вопроса 5
0xD34F
@0xD34F Куратор тега JavaScript
arr.map(id => people.find(n => n.id === id))

// или

arr.map(function(n) {
  return this[n];
}, people.reduce((acc, n) => (acc[n.id] = n, acc), {}))

или, с сохранением взаимного расположения элементов массива people:

people.filter(n => arr.includes(n.id))

// или

people.filter(((ids, n) => ids.has(n.id)).bind(null, new Set(arr)))
Ответ написан
Комментировать
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))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы