@antimodern

Как красиво выбрать элементы из массива по второму массиву?

Есть ли какой-то one-liner чтобы выбрать из массива только те элементы, которые содержатся во втором массиве?

const tags = [
  {
    id: 1,
    name: 'one'
  },
  {
    id: 2,
    name: 'two'
  },
  {
    id: 3,
    name: 'three'
  },
  {
    id: 4,
    name: 'four'
  }
]

const active = [
  {
    name: 'one'
  },
  {
    name: 'four'
  }
]
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const result = tags.filter(n => active.some(m => m.name === n.name));

или

const result = tags.filter(function(n) {
  return this.has(n.name);
}, new Set(active.map(n => n.name)));

или

const tagsObj = tags.reduce((acc, n) => (acc[n.name] = n, acc), {});
const result = active.reduce((acc, n) => ((n = tagsObj[n.name]) && acc.push(n), acc), []);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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