Фильтрация по вложенному массиву

Есть массив объектов users, внутри них еще один массив объектов stations, как через функцию arr.filter(x => ... ) найти объекты, у которых station.id == 1

Пример массива:

[{
    "id": 1603,
    "section": {
      "id": 2,
      "shop": 12
    },
    "employee": {
      "id": 152,
      "shop": 12,
      "stations": [],
      "certified_stations": [],
      "is_active": true
    },
    "cell": null,
    "row": null,
    "station": [{
        "id": 1,
        "project": 2
      },
      {
        "id": 2,
        "project": 2
      }
    ]
  },
  {
    "id": 1594,
    "section": {
      "id": 2,
      "shop": 12
    },
    "employee": {
      "id": 146,
      "shop": 12,
      "stations": [],
      "certified_stations": [],
      "is_active": true
    },
    "cell": null,
    "row": null,
    "station": [{
      "id": 2,
      "project": 2
    }]
  }
]

Ответы (1 шт):

Автор решения: SwaD

Отфильтровать массив объектов по вложенному массиву объектов можно так:

arr.filter(s => s.station.some(v => v.id === 1))

Отбираем элементы массива, где в ключе station есть хотябы один элемент с id = 1

Полный пример для демонстрации:

const arr = [{
    "id": 1603,
    "section": {
      "id": 2,
      "shop": 12
    },
    "employee": {
      "id": 152,
      "shop": 12,
      "stations": [],
      "certified_stations": [],
      "is_active": true
    },
    "cell": null,
    "row": null,
    "station": [{
        "id": 1,
        "project": 2
      },
      {
        "id": 2,
        "project": 2
      }
    ]
  },
  {
    "id": 1594,
    "section": {
      "id": 2,
      "shop": 12
    },
    "employee": {
      "id": 146,
      "shop": 12,
      "stations": [],
      "certified_stations": [],
      "is_active": true
    },
    "cell": null,
    "row": null,
    "station": [{
      "id": 2,
      "project": 2
    }]
  }
]

console.log(arr.filter(s => s.station.some(v => v.id === 1)));

→ Ссылка