Angular 父子数据结构类型中的递归搜索
我的数据结构如下: 每个子级可以有无限个子级列表 我想通过Id在此“树”中找到一个特定的子项,并通过链接返回它。Angular 父子数据结构类型中的递归搜索,angular,typescript,recursion,parent-child,Angular,Typescript,Recursion,Parent Child,我的数据结构如下: 每个子级可以有无限个子级列表 我想通过Id在此“树”中找到一个特定的子项,并通过链接返回它。 这就是我到目前为止所做的: getNodeById(nodes: child[], id: number) { for (var i = 0; i < nodes.length; i++) { if (id === nodes[i].id) { return nodes[i]; }
这就是我到目前为止所做的:
getNodeById(nodes: child[], id: number) {
for (var i = 0; i < nodes.length; i++) {
if (id === nodes[i].id) {
return nodes[i];
}
}
for (var i = 0; i < nodes.length; i++) {
return this.getNodeById(nodes[i].children, id);
}
return null;
}
getNodeById(节点:子[],id:number){
对于(var i=0;i
问题是不可能在第二个for循环中执行多次返回。return语句仅在i为0时发生。我也试过:
private getNodeById(nodes: child[], id: number) {
for (var i = 0; i < nodes.length; i++) {
if (id === nodes[i].id) {
return nodes[i];
}
}
for (var i = 0; i < nodes.length; i++) {
var children: child[] = [];
children = children.concat(nodes[i].children)
}
if (children.length > 0) {
return this.getNodeById(children, id);
}
return null;
}
私有getNodeById(节点:子[],id:编号){
对于(var i=0;i当我在函数外部更改返回的子项时,它不会影响树假定只有一个唯一的匹配项(因为您不想在第一个循环中找到多个匹配项),您可以执行以下操作:
for (var i = 0; i < nodes.length; i++) {
var match = this.getNodeById(nodes[i].children, id);
if (match) {
return match;
}
}
for(变量i=0;i
我不确定你所说的“链接”到底是什么意思。。。当您更改返回的子级时,您希望看到对树的哪些更改?你能展示一下吗?