【发布时间】:2014-01-22 03:26:29
【问题描述】:
我正在尝试遍历一系列父->子关系,直到我们到达一个没有自己的父级的父级。如果孩子有父母,那么我们将该父母对象与该父母的任何父母一起存储在数组中。如果父级没有父级,我们存储一个空数组。
这是一些显示我想要的数据结构的伪 JSON。
Node3 = { // Node 3
parent: { // Node 2
parent: { // Node 1
parent: null,
parentTree: []
},
parentTree: [Node1]
},
parentTree: [Node2, Node1]
}
到此为止的构造函数和递归方法……
function Node(parent) {
this.parent = typeof parent !== 'undefined' ? parent : null;
}
Node.prototype.getParentTree = function() {
if(typeof this.parentTree === "undefined") {
if (this.parent !== null) {
this.parentTree = this.parent.getParentTree();
this.parentTree.push(this.parent);
} else {
this.parentTree = [];
}
}
return this.parentTree;
}
这是我测试该方法的方式:
var node1 = new Node();
var node2 = new Node(node1);
var node3 = new Node(node2);
node3.getParentTree();
当前方法的问题在于 node1、node2 和 node3 的 parentTree 的长度都 === 2。当您检查 parentTree 中的对象时,它们包含无穷大的子对象对。
【问题讨论】:
标签: javascript recursion