ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript でフラット配列から階層ツリーを効率的に構築する方法

JavaScript でフラット配列から階層ツリーを効率的に構築する方法

Patricia Arquette
リリース: 2024-12-10 15:27:14
オリジナル
845 人が閲覧しました

How to Efficiently Build a Hierarchical Tree from a Flat Array in JavaScript?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート