Heim > Web-Frontend > js-Tutorial > Wie kann man in JavaScript effizient einen hierarchischen Baum aus einem flachen Array erstellen?

Wie kann man in JavaScript effizient einen hierarchischen Baum aus einem flachen Array erstellen?

Patricia Arquette
Freigeben: 2024-12-10 15:27:14
Original
841 Leute haben es durchsucht

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

Erstellen eines hierarchischen Baums aus einem flachen Array in JavaScript

In JavaScript gibt es Situationen, in denen Sie möglicherweise ein flaches Array von transformieren müssen Objekte, die eine hierarchische Struktur darstellen, in eine verschachtelte Baumstruktur. Dies kann bei der Arbeit mit komplexen JSON-Daten auftreten, wie im bereitgestellten Beispiel.

Um eine Baumstruktur aufzubauen, verwenden wir einen kartenbasierten Ansatz. Diese Methode ist effizient und unterstützt mehrere Wurzelknoten. Es erfordert, dass die übergeordneten Knoten im flachen Array vor ihren untergeordneten Knoten stehen.

So implementieren wir dies in 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));
Nach dem Login kopieren

Diese Lösung initialisiert eine Map-Map, die die Indizes jedes Knotens speichert ID, um eine schnelle Suche zu gewährleisten. Anschließend wird die Liste zweimal durchlaufen. Im ersten Durchgang wird die Kindereigenschaft jedes Knotens mit einem leeren Array initialisiert. Im zweiten Durchgang wird die Baumstruktur erstellt, indem Knoten mithilfe der Daten aus der Karte an ihre jeweiligen übergeordneten Knoten angehängt werden. Wenn ein Knoten die parentId „0“ hat, wird er als Wurzelknoten betrachtet und einem Array von Wurzeln hinzugefügt. Schließlich gibt die Funktion list_to_tree ein Array von Wurzelknoten zurück.

Das obige ist der detaillierte Inhalt vonWie kann man in JavaScript effizient einen hierarchischen Baum aus einem flachen Array erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage