我有以下结构的零件清单:
level | description
0 | sfg
1 | sdf
2 | asdisg
3 | sidjhf
4 | wefdsj
4 | asdfg
4 | sgfd
4 | sdg
3 | sfg
3 | fdg
4 | sdfg
4 | sdsfd
4 | sdf
4 | sdf
2 | adf
3 | sdfg
4 | sdg
4 | sdf
4 | sdf
4 | sdf
1 | shfg
2 | ijsd
3 | ijsd
4 | sdf
4 | sdf
Run Code Online (Sandbox Code Playgroud)
我需要将零件列表转换为这样的层次结构文件夹结构(在嵌套JSON中更可取):

我想在TypeScript中使用以下结构:
export interface Foo {
level: number;
description: string;
children?: Foo[];
}
Run Code Online (Sandbox Code Playgroud)
我需要的是一个嵌套的JSON对象或类似嵌套数组的东西,其中该数组包含具有另一个数组的子级。
不幸的是,我只显示了伪代码(我知道,这永远行不通):
recursiveWalker(List, lastLevel, parent) {
for (let i = 0; i < List.length; ++i) {
const node = {
description: List.description,
level: List.level
};
if (List.level === lastLevel + 1) {
node.children = this.recursiveWalker(List, lastLevel + 2, node);
}
}
return node;
}
Run Code Online (Sandbox Code Playgroud)
我的问题现在是:是否存在创建此类嵌套数据的简单解决方案?我是否必须使用递归函数,或者可以实现任何算法?
目标是使用此数据在Angular(https://material.angular.io/components/tree/overview)中创建材质树。
我真的很感谢任何帮助!
更新: 将需要以下结构:
const bar: Foo = {
description: 'this is level 0 (root)',
level: 0,
children: [{
description: 'this is level 1',
level: 1,
children: [
{
description: 'this is level 2',
level: 2
},
{
description: 'this is level 2',
level: 2
},
{
description: 'this is level 2',
level: 2,
children: [
{
description: 'this is level 3',
level: 3
},
{
description: 'this is level 3',
level: 3
},
{
description: 'this is level 3',
level: 3,
children: [] /* AND SO ON .... */
}
]
}
]
}]
};
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |