フラットな配列からツリーを構築する際に問題が発生しています。親がサブカテゴリを配列として持つカテゴリ - >サブカテゴリツリーを構築しています。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