Я пытаюсь пройти цепочку отношений parent-> child, пока мы не достигнем родителя, у которого нет собственного родителя. Если у ребенка есть родитель, мы сохраняем этот родительский объект в массиве вместе с родителями этого родителя. Если родительский элемент не имеет родителя, мы храним пустой массив.Рекурсивный Javascript: child-> parent relationship
Вот несколько псевдо-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();
Проблема с током метод состоит в том, что parentTree для node1, node2 и node3 имеет длину === 2. При проверке объектов в parentTree они содержат пары под-объектов до бесконечности.
работал большой, и теперь я вижу, где моя проблема была. Спасибо! – keepitreal