var treeDataOld = [
{id: '1', pId: '', name: 'root1', checked: false},
{id: '2', pId: '', name: 'root2', checked: false},
{id: '3', pId: '', name: 'root3', checked: true},
{id: '4', pId: '1', name: 'child', checked: true},
{id: '5', pId: '4', name: 'child', checked: false},
{id: '6', pId: '5', name: 'child', checked: false},
{id: '7', pId: '6', name: 'child', checked: false},
{id: '8', pId: '7', name: 'child', checked: true},
{id: '9', pId: '8', name: 'child', checked: false},
];
function findRoot(node) {
var getParentNode = function (node, refArray) {
var len = refArray.length;
for (var i = 0; i < len; i++) {
if (refArray[i].id === node) {
return refArray[i];
}
}
};
if (node.pId !== '') {
findRoot(getParentNode(node.pId, treeDataOld));
} else {
console.log(node); // I got OBJECT here
return node;
}
}
var rootNode = findRoot(treeDataOld[8]);
console.log(rootNode); // here is UNDEFINED
我想通过给出父节点来找到根节点。返回之前,我在函数 findRoot
内的第一个控制台得到了正确的结果。但函数外部的控制台未定义。
最佳答案
findRoot()
函数在进行第一次递归调用后不会返回任何内容。您想要的是以下内容:
if (node.pId !== '') {
return findRoot(getParentNode(node.pId, treeDataOld));
}
关于javascript - 为什么这段 JavaScript 代码返回未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33839678/