Из такого списка
table:any[] = [
{
name: 'A1 - John Doe',
icon: 'user-name',
bold: true,
code: 'NY',
open: false,
items: [
{
name: 'D3_AIR_ASBJHABSJAS',
icon: 'package',
open: false,
items: [
{
name: 'Charge Type 1',
open: false,
items: [
{
name: 'Charge Type 1.1',
icon: 'departure-nofill',
date: '12/10/2024'
},
{ name: 'Charge Type 1.2'},
{ name: 'Charge Type 1.3'},
{ name: 'Charge Type 1.4',
items: [
{ name: 'Charge Type 2.1'},
{ name: 'Charge Type 2.2'},
{ name: 'Charge Type 2.3'},
]
},
]
},
{
name: 'Charge Type 2',
open: false,
items: [
{ name: 'Charge Type 2.1'},
{ name: 'Charge Type 2.2'},
{ name: 'Charge Type 2.3',
items: [
{ name: 'Charge Type 2.1.1'},
]
},
]
},
{
name: 'Charge Type 3',
items: [
{ name: 'Charge Type 3.1'},
]
},
]
},
{
name: 'Hotel Beach Park',
icon: 'departure-nofill',
date: '12/10/2024'
}
]
},
{name: '567', code: 'NYF',
items: [
{ name: 'Charge Type 3.1'},
]
},
];
как выбрать родительский узел по этому дочернему значению { name: 'Charge Type 1.2'},
попробовал hasChildNodes(). Но не работает.
var item = { name: 'Charge Type 1.2'};
var parent=getParentElement(item)
Я хочу вернуться, как
{
name: 'Charge Type 1',
open: false,
items: [
{
name: 'Charge Type 1.1',
icon: 'departure-nofill',
date: '12/10/2024'
},
{ name: 'Charge Type 1.2'},
{ name: 'Charge Type 1.3'},
{ name: 'Charge Type 1.4',
items: [
{ name: 'Charge Type 2.1'},
{ name: 'Charge Type 2.2'},
{ name: 'Charge Type 2.3'},
]
},
]
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете найти элемент в дереве рекурсивно.
Вот пример
function findParentElement(childElement) {
const childName = childElement.name
function recursiveSearch(items, parent) {
for (let item of items) {
if (item.name === childName) {
return parent;
}
if (item.items) {
const result = recursiveSearch(item.items, item);
if (result) {
return result;
}
}
}
return null;
}
return recursiveSearch(table, null);
}