Roc*_*wer 2 javascript algorithm tree node.js
[
{
"id": "a",
"pid": "a",
"name": "AA",
},
{
"id": "b",
"pid": "a",
"name": "BB",
},
{
"id": "c",
"pid": "a",
"name": "CC",
},
{
"id": "x",
"pid": "b",
"name": "XX",
}
]
Run Code Online (Sandbox Code Playgroud)
上面是我从数据库中获得的数据。每个人都有一个id和一个pid,pid指向该人的较高级别的人id。如果一个人的水平最高,则id等于pid。
我想将原始数据转换为分层JSON,如下所示:
[
{
"id": "a",
"name": "AA",
"child": [
{
"id": "b",
"name": "BB"
"child": [
{
"id": "x",
"name": "XX"
}
]
},
{
"id": "c",
"name": "CC"
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
我正在使用Node.js。
我建议您创建一棵树并将其id === pid作为树的根,这适用于未排序的数据。
怎么运行的:
基本上,对于数组中的每个对象,都需要像
id构建新对象一样parentid构建新对象。例如:
Run Code Online (Sandbox Code Playgroud){ "id": 6, "pid": 4 }它首先使用
id以下命令生成此属性:Run Code Online (Sandbox Code Playgroud)"6": { "id": 6, "pid": 4 }然后用
pid:Run Code Online (Sandbox Code Playgroud)"4": { "children": [ { "id": 6, "pid": 4 } ] },在对所有对象进行类似处理的同时,我们最终得到了一棵树。
如果为
id === pid,则找到根节点。这是以后返回的对象。
{ "id": 6, "pid": 4 }
Run Code Online (Sandbox Code Playgroud)