首頁 > web前端 > js教程 > 如何在 JavaScript 中有效地將分層資料的平面數組轉換為嵌套樹結構?

如何在 JavaScript 中有效地將分層資料的平面數組轉換為嵌套樹結構?

Barbara Streisand
發布: 2024-12-19 22:30:11
原創
575 人瀏覽過

How Can I Efficiently Convert a Flat Array of Hierarchical Data into a Nested Tree Structure in JavaScript?

在JavaScript 中從平面數組資料建立樹結構

處理複雜的分層資料時,有必要將其組織成樹-類似於分析和演示的結構。在本例中,有序 JSON 檔案包含數據,每個條目都有 id、parentId、層級和文字。任務是將這種平面資料結構轉換為嵌套層次結構。

為了有效地實現這種轉換,利用地圖查找策略非常重要。這涉及創建一個映射,將每個 id 映射到其在列表中的索引。透過利用此映射,可以一次建立嵌套層次結構,從而無需多次循環。

以下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;
}
登入後複製

透過建立一個映射來快速存取父節點並初始化每個節點的子列表,該函數可以有效地合併兩個for 迴圈。此方法支援多個根,並且可以處理懸掛分支或透過簡單的修改忽略它們。

要示範該函數的功能,您可以使用以下輸入執行它:

var entries = [{
    "id": "12",
    "parentId": "0",
    "text": "Man",
    "level": "1",
    "children": null
  },
  {
    "id": "6",
    "parentId": "12",
    "text": "Boy",
    "level": "2",
    "children": null
  },
  {
    "id": "7",
    "parentId": "12",
    "text": "Other",
    "level": "2",
    "children": null
  },
  {
    "id": "9",
    "parentId": "0",
    "text": "Woman",
    "level": "1",
    "children": null
  },
  {
    "id": "11",
    "parentId": "9",
    "text": "Girl",
    "level": "2",
    "children": null
  }
];

console.log(list_to_tree(entries));
登入後複製

這將輸出具有節點之間預期關係的分層樹結構。透過利用地圖尋找策略,這種方法提供了一種高效靈活的解決方案,用於將平面分層資料轉換為結構良好的樹形數組。

以上是如何在 JavaScript 中有效地將分層資料的平面數組轉換為嵌套樹結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板