@fessss

Фильтр массива объектов по ключу?

Есть массив вида
const arr = [
  {
    'name': 'test1',
    'items': [
      {
        'name': 'test1-1',
        id: 1
      },
      {
        'name': 'test1-2',
        id: 2
      },
      {
        'name': 'test1-3',
        id: 3
      }
    ]
  },
  {
    'name': 'test2',
    'items': [
      {
        'name': 'test2-1',
        id: 5
      },
      {
        'name': 'test2-2',
        id: 9
      },
      {
        'name': 'test2-3',
        id: 10
      }
    ]
  }
]


Каким образом его можно отфильтровать так, чтобы в результате получить массив объектов с id 9 b 10
то есть
result = [
  {
    'name': 'test2-2',
    id: 9
  },
  {
    'name': 'test2-3',
    id: 10
  }
]


Подскажите пожалуйста
  • Вопрос задан
  • 771 просмотр
Решения вопроса 3
0xD34F
@0xD34F Куратор тега JavaScript
const ids = [ 9, 10 ];

const items = arr.flatMap(n => n.items).filter(n => ids.includes(n.id));
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
arr.reduce((acc, c) => acc.concat(...c.items.filter(e => [9,10].indexOf(e.id) > -1)), [])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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