【发布时间】:2018-02-23 17:17:10
【问题描述】:
我有以下用 JavaScript 编写的递归函数:
function getNestedChildren(arr, parent) {
let out = [];
arr.forEach(function (item) {
if (item.Parent == parent) {
let children = getNestedChildren(arr, item.ID);
if (children.length) {
item.children = children;
}
out.push(item);
}
});
return out
} // getNestedChildren
这里的工作示例:https://jsfiddle.net/fp1zvf0h/7/
在 VS Code 中重构为 TypeScript,如:
private getNestedChildren(arr:object[], parent:number):object[] {
let out:object[];
arr.forEach((item:{ID:number, Parent:number, children:{}}) => {
if (item.Parent === parent) {
let children:object[] = getNestedChildren(arr, item.ID);
if (children.length) {
item.children = children;
}
out.push(item);
}
});
return out;
} // getNestedChildren
我得到编译错误Cannot find name 'getNestedChildren'就行了:
let children:object[] = getNestedChildren(arr, item.ID);
我错过了什么?
【问题讨论】:
-
这是在课堂上吗?
-
你错过了
this。如果您将此函数移动为班级成员,则需要this.getNestedChildren...
标签: typescript