У меня есть родительский объект с дочерним массивом объектов, расположенных под ним.Каждый объект содержит ключ id
с уникальным значением.Функция фильтра должна искать в родительском объекте id
, если он не равен заданному id
, то рекурсивно искать во вложенных объектах id
, пока он не будет найден.Как только объект с данным ключом найден, удалите и верните обновленный myObject
.
Структура выглядит следующим образом:
let myObject = {
key: 1,
name: 'hello',
children: [
{
key: 2,
name: 'world',
children: []
},
{
key: 3,
name: 'hope',
children: [
{
key: 4,
name: 'you',
children: [{
key: 5,
name: 'are',
children: []
}]
},
{
key: 6,
name: 'having',
children: [{
key: 7,
name: 'fun',
children: []
}]
}
]
}
]
}
let given = 4;
if (myObject.key !== given) {
myObject = searchChild(myObject, given)
} else {
myObject = {}
}
function searchChild(parent, given) {
parent.children.map(child => {
return child.children.filter(item => {
if (item.key === given) return item;
else if (item.key !== given
&& child.children.length > 0
&& child.children != undefined) {
searchChild(child.children, given);
}
})
})
}
В настоящее время я получаю ошибку типа при запуске рекурсивной функции.
Вывод должен выглядеть так, как ключи обновляются до нового порядка вдерево:
{
key: 1,
name: 'hello',
children: [
{
key: 2,
name: 'world',
children: []
},
{
key: 3,
name: 'hope',
children: [
{
key: 4,
name: 'having',
children: [{
key: 5,
name: 'fun',
children: []
}]
}
]
}
]
}