我目前有一个未知深度的嵌套 javascript 对象。该对象是纯粹动态生成的,因此我不知道要删除的属性的父项的名称(如果必须的话,我可以修改一些东西来获取它们,但我试图避免这种情况)。
我目前有一个名为的函数search_tree(name)
,它搜索对象的所有属性,直到找到一个属性 name : "name"
,然后返回该对象以在树的该位置添加数据。
但是,我现在需要从树中删除该对象,但还没有让它工作。我努力了:
obj = search_tree(name);
delete obj;
这不起作用,我假设因为 obj 实际上不是树中的对象,而是对它的引用?
delete search_tree(name);
也没有结果。这可以通过这种方式完成,还是我需要更改search_tree
函数以某种方式返回遗产(或者只是制作不同的遗产)?谢谢
来自 search_tree 的代码
function search_tree(element, matchingName){
if(element.name == matchingName){
return element;
}else if (element.children != null){
var result = null;
for(var child in element.children){
result = searchTree(element.children[child], matchingName);
}
return result;
} else {
return null;
}
}
刚意识到这个功能可能有点不清楚,没有解释。树中的每个对象都有一个称为“children”的子对象,其中将存储任意数量的其他对象。我添加了额外的“子”层,因为这些对象通常具有我不想作为树的一部分搜索的子对象。元素是被搜索的对象