Javascript json反向引用
我有一个层次化的json对象,我想遍历它并将父节点附加到每个元素。这就是我所做的Javascript json反向引用,javascript,jquery,data-structures,tree,Javascript,Jquery,Data Structures,Tree,我有一个层次化的json对象,我想遍历它并将父节点附加到每个元素。这就是我所做的 function attach_back_reference(hierarchy, parent){ hierarchy.parent = parent; for(var i in hierarchy){ if(jQuery.isPlainObject(hierarchy[i])) attach_back_reference(hierarchy[i], hie
function attach_back_reference(hierarchy, parent){
hierarchy.parent = parent;
for(var i in hierarchy){
if(jQuery.isPlainObject(hierarchy[i]))
attach_back_reference(hierarchy[i], hierarchy);
}
}
但这是一个错误<代码>超过了最大调用堆栈大小您有一个无限循环 您正在将每个对象的父对象设置为其自身。因为您这样做了
for(var i in hierarchy){
添加parent
属性后,i
的一个值将是“parent”
,因此您最终会无限地将孩子设置为自己的祖父母
你可以从中看到这一点
var o = {};
o.x = o;
for (var i in o) { alert(i); }
哪些警报“x”
将循环移动到顶部
function attach_back_reference(hierarchy, parent){
for(var i in hierarchy){
if(jQuery.isPlainObject(hierarchy[i]))
attach_back_reference(hierarchy[i], hierarchy);
}
hierarchy.parent = parent;
}
或者,如果您只需要在较新的解释器上使用它,您可以尝试使父属性不可计算:但我正在传递
附加回\u引用(层次[I],层次)
因此层次[I]。将执行parent=hierarchy
。我忽略了这一点。而且我发现如果在层次结构中间有一个数组,它也不起作用,你能告诉我如何处理数组吗?所以它将父对象分配给第一个对象(非数组)祖先?