0
我遇到了從平面陣列構建樹的問題。我正在構建一個類別 - >子類別樹,其中父類具有子類別作爲數組。Javascript遞歸樹大廈
這裏是平板式會是什麼樣子:
[
{
"id": 1
},
{
"id": 5,
},
{
"id": 2,
"parent_id": 1
},
{
"id": 3,
"parent_id": 1
},
{
"id": 42,
"parent_id": 5
},
{
"id": 67,
"parent_id": 5
}
]
而這正是我需要的結果看:
[
{
"id":1,
"subcategories":[
{
"id":2,
"parent_id":1
},
{
"id":3,
"parent_id":1
}
]
},
{
"id":5,
"subcategories":[
{
"id":42,
"parent_id":5
},
{
"id":67,
"parent_id":5
}
]
}
]
我試圖遞歸地做到這一點通過遞歸搜索孩子們,並將它作爲一個陣列,並繼續這樣做,直到我擊中桶的底部,但我得到一個循環結構。看來,在遍歷PARENT_ID永遠是父母的ID ...任何想法:
tree(passingInFlatObjectHere);
function topLevel (data) {
let blob = [];
data.forEach((each) => {
if (!each.parent_id) {
blob.push(each);
}
});
return blob;
}
function tree (data) {
let blob = topLevel(data).map(function (each) {
each.subcategories = traverse(data, each.id);
return each;
});
return blob;
}
function traverse (data, parent_id) {
let blob = [];
if (!parent_id) {
return blob;
}
data.forEach((each) => {
if (each.id === parent_id) {
each.subcategories = traverse(data, each.id);
blob.push(each);
}
});
return blob;
}
哇感謝您的幫助和展示我所有的漂亮的新糖ES6。 – Goodwin