我綁定遍歷JavaScript中的分層樹來確定它有多少級別。這裏是我的樹的短片段:分層樹中遞歸
parent: [
{ id: 1 }
{
child1: [
{ id: 2 }
{
child2: [
{ id: 3 }
{}
]
}
],
child3: [
{ id: 4 }
{
child4: [
{ id: 5 }
{}
],
child5: [
{ id: 6 }
{
child6: [
{ id: 7 }
{}
]
}
]
}
]
}
]
會有未知數的父母和孩子。有一定的把握:
- 每個元素(例如,父母)總是有它的數組中的2個對象。 第一個對象始終是一個ID。 第二個對象包含它擁有的子項。這可能是空的或填充
我的目標是確定樹的層數。例如,此示例樹中有4個級別(parent = 1,child1 + child3在同一級別(2),child4和child5在同一級別(3),child6 = 4)。
這是我到目前爲止的代碼:
for (var j in dependencyTree) {
if (getObjectSize(dependencyTree[j][1]) > 0) {
levelsArray.push(j + ': ' + recursiveFunction(dependencyTree[j][1], 1));
}
}
function recursiveFunction(obj, lvls) {
if (getObjectSize(obj) > 0) {
for (var i in obj) {
recursiveFunction(obj[i][1], lvls++);
}
}
return lvls;
}
getObjectSize()
僅返回對象的大小。即有多少直接的孩子。例如,對象parent
將返回2(child1
和child3
)。
在開始的時候,頂級parent
的孩子都進入了這個函數。
我想我的問題是,for
環路(for (var i in obj)
),因爲可能會搶第一個孩子parent
有(child1
),並最終將返回級的數量child1
具有即使child3
有更多。
任何幫助表示讚賞。
(還沒有嘗試lodash但都被告知它不提供遞歸幫助)
編輯
{
"Mobile": [
{
"id": 89
},
{
"Mobile Client": [
{
"id": 100
},
{}
]
}
],
"Service Platform": [
{
"id": 90
},
{
"Service Platform": [
{..."
EDIT(新提出的格式):
我剛纔講與我的同事一樣,新提出的數據格式是:
[
{
"name": "Mobile",
"id": 89,
"children": [
{
"name": "Mobile Client",
"id": 100,
"children": {}
}
]
}
];
這似乎是更可行的數據並即將實施的明天
你有過的數據格式的任何控制?看起來數據是以一種奇怪的方式編碼的,具體來說,有些數組應該是對象而對象應該是數組。 – Daniel
@Daniel我正在與通過REST Call提供數據的人交談,他說可以操縱它。你認爲它可以更好地格式化嗎? – wmash
我會從使用有效的JSON開始。這意味着你擁有的任何對象都應該被命名,否則使用類似數組的方式遍歷對象 – Daniel