JavaScript でフラット配列から階層ツリーを構築する
JavaScript では、フラット配列を変換する必要がある状況があります。階層構造を表すオブジェクトをネストされたツリー構造に変換します。これは、提供されている例のように、複雑な JSON データを操作するときに発生する可能性があります。
ツリー構造を構築するには、マップベースのアプローチを利用します。この方法は効率的であり、複数のルート ノードをサポートします。フラット配列では親ノードが子ノードよりも前にある必要があります。
これを JavaScript で実装する方法は次のとおりです。
function list_to_tree(list) { var map = {}, node, roots = [], i; for (i = 0; i < list.length; i += 1) { map[list[i].id] = i; // initialize the map list[i].children = []; // initialize the children } for (i = 0; i < list.length; i += 1) { node = list[i]; if (node.parentId !== "0") { // if you have dangling branches check that map[node.parentId] exists list[map[node.parentId]].children.push(node); } else { roots.push(node); } } return roots; } var entries = //Your flat array of entries console.log(list_to_tree(entries));
このソリューションは、各ノードのインデックスを格納するマップ マップを初期化します。 ID、素早い検索を保証します。次に、リストを 2 回繰り返します。最初のパスでは、各ノードの Children プロパティを空の配列に初期化します。 2 番目のパスでは、マップのデータを使用してノードをそれぞれの親ノードに接続することでツリー構造を構築します。ノードのparentIdが「0」の場合、そのノードはルート ノードとみなされ、ルートの配列に追加されます。最後に、list_to_tree 関数はルート ノードの配列を返します。
以上がJavaScript でフラット配列から階層ツリーを効率的に構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。