Задать вопрос
@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'
    }
]
  • Вопрос задан
  • 165 просмотров
Подписаться 1 Простой Комментировать
Решение пользователя 0xD34F К ответам на вопрос (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)))
Ответ написан
Комментировать