Фильтрация по вложенному массиву
Есть массив объектов 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)));