Как можно корректно отфильтровать массив объектов такого плана:
let arr = [{
"category": "new",
"list": [{
"item": "Black"
},
{
"item": "Red"
}
]
},
{
"category": "old",
"list": [{
"item": "..."
},
{
"item": "...."
}
]
}
Что бы на выходе после фильтрации получать такого плана в зависимости от введеной category или item, при это если введена только category отобразить внутри все item, если введен item, отобразить все category где этот item встречается и сами item, что бы дальше их в 2-х комопнентах можно было мапить по category , а потом по item. Пишу сейчас что то типа такого:
сonst filterData = arr
.filter(
(value) =>
value.category.toLowerCase().includes(input.value) ||
value.list.some((i: any) => i.item.toLowerCase().includes(input.value))
).map(e=>e.list.filter(e=>e.item.toLowerCase().includes(input.value)))
Но на выходе получаю, если input value пустое
[
[{"id":126,"item":"...."},{"id":127,"item":"...."},{"id":133,"item":"....""}],
[{"id":129,"item":"...."},{"id":130,"item":"...."}],
[{"id":131,"item":"....""},{"id":132,"item":"...."}]
]