【发布时间】:2019-11-08 00:15:45
【问题描述】:
我有一个具有多级嵌套的层次结构树 JSON。当我试图遍历 JSON 以在 UI 中显示树结构时。我以循环冗余结束,因为父 ID 在不同级别是相同的。我需要为 parentID 和 ID 添加唯一标识符,因此在递归调用中它不会以无限循环结束。
示例 JSON:
[
{
"id": "12",
"text": "Man"
},
{
"id": "6",
"parentId": "12",
"text": "Boy"
},
{
"id": "9",
"parentId": "6",
"text": "Boy-Boy"
},
{
"id": "13",
"parentId": "9",
"text": "Boy-Boy-Boy"
},
{
"id": "7",
"parentId": "12",
"text": "Other"
},
{
"id": "6",
"parentId": "7",
"text": "Boy"
},
{
"id": "9",
"parentId": "6",
"text": "Boy-Boy"
},
{
"id": "13",
"parentId": "9",
"text": "Boy-Boy-Boy"
}
我已尝试为每个级别添加深度,但无法保持 ParentId 和 Id 关系。
var depthArray = []
function addDepth(arr, depth = 0) {
arr.forEach(obj => {
obj.id = obj.id + '-' + depth;
if(obj.children !== undefined) {
addDepth(obj.children, depth + 1)
}})
return arr;
}
[
{
"id": "12",
"text": "Man"
},
{
"id": "6",
"parentId": "12",
"text": "Boy"
},
{
"id": "9",
"parentId": "6",
"text": "Boy-Boy"
},
{
"id": "13",
"parentId": "9",
"text": "Boy-Boy-Boy"
},
{
"id": "7",
"parentId": "12",
"text": "Other"
},
{
"id": "6-1",
"parentId": "7",
"text": "Boy"
},
{
"id": "9-1",
"parentId": "6-1",
"text": "Boy-Boy"
},
{
"id": "13-1",
"parentId": "9-1",
"text": "Boy-Boy-Boy"
}
]
【问题讨论】:
-
为什么会有重复的节点?同一个节点有可能有两个父母吗?最后,你想达到什么目的?目前还不是很清楚问题是什么。
-
@Maaz Syed Adeeb,层次结构树具有循环和相互关系,因此给出了重复的节点。是的,相同的节点可以有两个父节点,因为它是循环的。我正在尝试生成树结构,如果存在循环关系,我想为重复节点提供一个唯一的 ID,以便整个树结构具有唯一的节点 ID。希望这会有所帮助
-
ID 9 / parentId 6 的 Btw 副本非常奇怪 - 可能是一些拼写错误?
标签: javascript arrays json cyclic-dependency