Мне нужно отфильтровать массив с дочерними элементами
Я использую функцию .filter и не фильтрую дочерние элементы так, как мне нужно
Это пример объекта
var arr = {
"items":[
{
"name":"Stackoverflow",
"type":"development",
"children":[
{
"title":"web",
"titleName":"web site"
},
{
"title":"web",
"titleName":"site"
}
]
},
{
"name":"Jon Snow",
"type":"actor",
"children":[
{
"title":"foo 2",
"titleName":"foo 3"
},
{
"title":"no foo",
"titleName":"bar 2"
}
]
}
]
}
Пример кода:
var searchWord = 'foo'
arr.items.filter(item => {
return (item.children.some(c => c.titleName.indexOf(searchWord) > -1))
})
это вернет элементы, которые имеют фильтр правильно, но мне нужно, чтобы фильтры потомков возвращались
//The returned children
{
"name":"Jon Snow",
"type":"actor",
"children":[{title: "foo 2", titleName: "foo 3"}, {title: "no foo", titleName: "bar 2"}]
}
//The expected should be
{
"name":"Jon Snow",
"type":"actor",
"children":[{title: "foo 2", titleName: "foo 3"}]
}