我试图构建逻辑以访问我当前通过递归访问的子节点的所有父节点,但是不能这样做。这是我到目前为止所做的:
这是我的阵列:
y
现在我的逻辑是迭代:
var results = [{
"key": 1,
"name": "A",
"child": [{
"key": 2,
"name": "A1",
"child": [{
"key": 1473591350189,
"name": "A11"
}]
}, {
"key": 10,
"name": "A2",
"child": []
}]
}, {
"key": 66,
"name": "B",
"child": [{
"key": 67,
"name": "B1",
"child": [{
"key": 68,
"name": "B11",
"child": [{
"key": 69,
"name": "B111",
"child": []
}]
}]
}]
}];
我在这里找到当前孩子的直系亲,但我如何才能接触到该孩子的所有父母。例如,如果关系是: A - > A1 - > A11 那么如何才能访问 A11 的所有家长?在此先感谢!!
答案 0 :(得分:0)
走私父母最好是循环而不是递归。 走遍层次结构中的所有节点(可以说)使用递归比在循环中更好。
我建议这样走路的父母
function navParents(node)
{
if(!node)
return;
while(node != null) {
/* do something with node here */
node = node.parent;
}
}
答案 1 :(得分:0)
您可以使用迭代递归方法来搜索所需节点的父节点,该节点在回调中定义。
此提案使用Array#some
,因为如果找到某个节点,则可以针对此级别停止迭代。
结果数组包含从根到最终节点的所有父节点。
function getParentNodes(tree, callback) {
var nodes = [];
tree.some(function iter(a) {
if (callback(a) || Array.isArray(a.child) && a.child.some(iter)) {
nodes.unshift(a);
return true;
}
});
return nodes;
}
var results = [{ key: 1, name: "A", child: [{ key: 2, name: "A1", child: [{ key: 1473591350189, name: "A11" }] }, { key: 10, name: "A2", child: [] }] }, { key: 66, name: "B", child: [{ key: 67, name: "B1", child: [{ key: 68, name: "B11", child: [{ key: 69, name: "B111", child: [] }] }] }] }];
console.log(getParentNodes(results, function (o) { return o.name === 'A11'; }));

.as-console-wrapper { max-height: 100% !important; top: 0; }