我的数据有以下属性:
我第一次尝试建造一棵树就在下面.它是错误的,因为递归导致无限循环.即使我解决了,我也不确定是否有更好的方法来做到这一点.目前,我正在进行2次传球.
我希望它尽可能高效,因为我有相当数量的数据.它还需要动态重建树(根可以是任何节点)
以下程序中有样本数据:
arry = [{"Id":"1", "Name":"abc", "Parent":""}, {"Id":"2", "Name":"abc", "Parent":"1"},
{"Id":"3", "Name":"abc", "Parent":"2"},{"Id":"4", "Name":"abc", "Parent":"2"}]//for testing
Run Code Online (Sandbox Code Playgroud)
我希望输出是(它可能是错误的嵌套结构,因为我手动编写它.但是,我希望是一个有效的JSON结构,节点作为字段'值',子节点作为数组.)
{
"value": {"Id":"1", "Name":"abc", "Parent":""},
"children": [
{
"value": {"Id":"2", "Name":"abc", "Parent":"1"},
"children": [
{
"value": {"Id":"3", "Name":"abc", "Parent":"2"},
"children": []
},
{
"value": {"Id":"4", "Name":"abc", "Parent":"2"},
"children": []
}
]
..
}
Run Code Online (Sandbox Code Playgroud)
示例程序:
function convertToHierarchy(arry, root)
{
//root can be treated a special case, as the id is known
arry = [{"Id":"1", "Name":"abc", "Parent":""}, {"Id":"2", "Name":"abc", "Parent":"1"}, …Run Code Online (Sandbox Code Playgroud) javascript ×1