Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menukar Susunan Data Hierarki Rata dengan Cekap kepada Struktur Pokok Bersarang dalam JavaScript?

Bagaimanakah Saya Boleh Menukar Susunan Data Hierarki Rata dengan Cekap kepada Struktur Pokok Bersarang dalam JavaScript?

Barbara Streisand
Barbara Streisandasal
2024-12-19 22:30:11621semak imbas

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

Membina Struktur Pokok daripada Data Tatasusunan Rata dalam JavaScript

Apabila bekerja dengan data hierarki yang kompleks, ia menjadi perlu untuk menyusunnya menjadi pokok- seperti struktur untuk analisis dan pembentangan. Dalam kes ini, fail JSON yang dipesan mengandungi data dengan setiap entri mempunyai id, parentId, tahap dan teks. Tugasnya adalah untuk menukar struktur data rata ini kepada hierarki bersarang.

Untuk mencapai transformasi ini dengan cekap, adalah penting untuk memanfaatkan strategi carian peta. Ini melibatkan mencipta peta yang memetakan setiap id ke indeksnya dalam senarai. Dengan menggunakan peta ini, hierarki bersarang boleh dibina dalam satu laluan, menghapuskan keperluan untuk berbilang gelung.

Fungsi JavaScript berikut menunjukkan pendekatan carian peta untuk membina struktur pokok:

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;
}

Dengan mencipta peta untuk mengakses ibu bapa dengan pantas dan memulakan senarai anak untuk setiap nod, fungsi ini boleh menggabungkan kedua-dua gelung untuk dengan cekap. Pendekatan ini menyokong berbilang akar dan boleh mengendalikan dahan berjuntai atau mengabaikannya dengan pengubahsuaian mudah.

Untuk menunjukkan kefungsian fungsi, anda boleh melaksanakannya dengan input berikut:

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));

Ini akan mengeluarkan struktur pokok hierarki dengan hubungan yang dijangkakan antara nod. Dengan memanfaatkan strategi carian peta, pendekatan ini menawarkan penyelesaian yang cekap dan fleksibel untuk mengubah data hierarki rata kepada tatasusunan pokok yang tersusun dengan baik.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Susunan Data Hierarki Rata dengan Cekap kepada Struktur Pokok Bersarang dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn