Mar*_*eyn 3 tree recursion typescript
我有一个具有以下结构的对象数组:
{
Name: "Automotive"
RefCategory: 1,
ChildCategories:[{
Name: "Car"
RefCategory: 2,
ChildCategories: []
},{
Name: "Motorcycle"
RefCategory: 3,
ChildCategories: []
}]
}
Run Code Online (Sandbox Code Playgroud)
我编写了一个函数来查找给定 Ref 的类别节点:
navigateToNode(node: any, RefCategoryToFind: number): any {
if (node.RefCategory == RefCategoryToFind)
return node;
node.ChildCategories.forEach(value => {
if (value.RefCategory == RefCategoryToFind)
return value;
else {
if (value.ChildCategories.length !== 0)
return this.navigateToNode(value, RefCategoryToFind);
}
});
}
Run Code Online (Sandbox Code Playgroud)
当我调用这个函数时返回 null
let x = this.navigateToNode(this.activeCategories[0], 2);
Run Code Online (Sandbox Code Playgroud)
我可以看到它击中了return value;,从而找到了正确的节点,但返回未定义。
您的回调正在返回一个值,但包装函数不会返回任何内容。尝试在找到时保存返回值并返回:
navigateToNode(node: any, RefCategoryToFind: number): any {
if (node.RefCategory == RefCategoryToFind)
return node;
var result;
node.ChildCategories.forEach(value => {
if (value.RefCategory == RefCategoryToFind) {
result = value;
return value;
} else {
if (value.ChildCategories.length !== 0)
return this.navigateToNode(value, RefCategoryToFind);
}
});
return result;
}
Run Code Online (Sandbox Code Playgroud)