Я пытаюсь удалить объект во вложенном (иерархическом) массиве объектов с отношениями родитель-потомок. Я хочу удалить из этого объект, у которого атрибут «required» как false, а «name» пуст или равен нулю. Когда я удаляю этот объект, если это родительский объект, я хочу, чтобы дочерние элементы были прикреплены к дедушке и бабушке (родительскому родительскому объекту). Но когда я удаляю его в рекурсии, удаляется весь элемент, включая дочерний. Пожалуйста, помогите с рекурсивным подходом.
Ниже представлена структура
{
"name": "abc",
"nodeId": 1,
"parentNodeId": null,
"required": true,
"children": [
{
"name": "",
"nodeId": 2,
"parentNodeId": 1,
"required": false,
"children": [
{
"name": "",
"nodeId": 3,
"parentNodeId": 2,
"required": false,
"children": [
{
"name": "xyz",
"nodeId": 4,
"parentNodeId": 3,
"required": true,
"children": []
}
]
},
{
"name": "pqr",
"nodeId": 5,
"parentNodeId": 2,
"required": true,
"children": []
}
]
}
]
}
В приведенном выше сценарии дочерний элемент с именем 'xyz' должен быть напрямую привязан к nodeId, равному 1 (ab c), поскольку его непосредственные родители должны быть удалены.
Я нашел это конкретное решение для удаления на основе заданного условия, но оно не сохраняет дочерние элементы.
removeFromTree(root, parent, idx) {
if (!root.name && root.required === false) {
if (parent) {
parent.modelLines.splice(idx, 1);
}
else return null;
}
if (root.modelLines != null) {
for (const [i, e] of root.children.entries()) {
this.removeFromTree(e, root, i);
}
}
return tree;
};
Пожалуйста, помогите разобраться с этим сценарием