10.000 Daten gingen im Hintergrund verloren Egal wie viel ich plante, ich konnte ihm nicht entkommen. Das Backend warf tatsächlich Zehntausende Daten auf einmal an das Frontend. Naja, zumindest sind es noch keine 100.000. Wie unten gezeigt, gibt der Hintergrund die folgende Struktur zurück: const flatArr = [ { id: '001', name: 'Knoten 1' }, { id: '0011', parentId: '001', name: 'Knoten 1-1' }, { id: '00111', parentId: '0011', name: 'Knoten 1-1-1' }, { id: '002', name: 'Knoten 2' }, ] Wie Sie sehen, handelt es sich hierbei eigentlich um ein flaches Array. Unsere Anforderung besteht darin, solche Daten im Kaskadenselektor von Element-ui darzustellen, der die folgende Baumstruktur erhält: let Optionen = [ { Wert: 'zhinan', Bezeichnung: 'Leitfaden', Kinder: [ { Wert: 'shejiyuanze', Bezeichnung: 'Designprinzipien', Kinder: [ { Wert: 'yizhi', Bezeichnung: 'konsistent' }, {Wert: 'fankui', Bezeichnung: 'Feedback'} ], } ] } ] Oh mein Gott, dazu muss ich das flache Array in eine Baumstruktur umwandeln! Rekursive Methode Es ist fertig, der Code ist prägnant, die Idee ist klar, aber was passiert, wenn es ausgeführt wird? Die Seite hängt. Laut console.time() hat es etwa 18 Sekunden gedauert, die benötigte Baumstruktur zu berechnen. Nicht rekursive Methode Hier wenden wir geschickt die Funktion an, dass Objekte Referenzen speichern. Jedes Mal wird die ID des aktuellen Knotens als Schlüssel verwendet, um die Referenzinformationen des entsprechenden Knotens zu speichern. Beim Durchlaufen des Arrays werden die untergeordneten Informationen von objMap jedes Mal aktualisiert. Auf diese Weise bleiben alle Knoten und ihre untergeordneten Knoten in objMap erhalten. Am wichtigsten ist, dass wir das Array nur einmal durchlaufen müssen und die Zeitkomplexität O(n) beträgt. Die Berechnungszeit beträgt bei dieser Methode nur 60ms! Zusammenfassen
Schauen wir uns eine Vergleichstabelle an: Aus dem oben beschriebenen Trend, dass die zeitliche Komplexität mit der Datenmenge zunimmt, können wir erkennen, dass bei immer größer werdenden Datenmengen der Zeitaufwand des rekursiven Algorithmus viel größer ist als der des nicht-rekursiven Algorithmus. Daher bietet die Verwendung eines rekursiven Algorithmus bei kleinen Datenmengen gewisse Vorteile. Bei einer bestimmten Datenmenge werden die Nachteile des rekursiven Ansatzes jedoch immer deutlicher und die Verwendung eines nicht rekursiven Algorithmus ist viel schneller! Abschließend muss ich sagen, dass wir durch diesen Vergleich deutlich die Bedeutung von Algorithmen spüren können. Unterschiedliche Implementierungsmethoden können große Unterschiede aufweisen, die die Aufmerksamkeit jedes Entwicklers verdienen! Dies ist das Ende dieses Artikels über das Implementierungsbeispiel zur Konvertierung eines flachen JavaScript-Arrays in eine Baumstruktur. Weitere relevante Inhalte zur Konvertierung eines flachen JavaScript-Arrays in eine Baumstruktur finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Häufige Ursachen und Lösungen für langsame MySQL-SQL-Anweisungen
>>: Gespeicherte MySQL-Prozeduren, d. h. eine Zusammenfassung allgemeiner logischer Wissenspunkte
Dieser Artikel beschreibt anhand von Beispielen d...
1. Problem Die Docker-Containerprotokolle führten...
Zusammengeklappte Kopfzeilen sind eine großartige...
In diesem Artikel wird der spezifische Code von F...
In diesem Artikel wird der spezifische JS-Code zu...
Installationsreihenfolge rpm -ivh mysql-community...
Lassen Sie uns die Funktion von Taobao nachahmen,...
Betriebsumgebung: MAC Docker-Version: Docker vers...
XML/HTML-CodeInhalt in die Zwischenablage kopiere...
Nachdem ich gestern die PHP-Entwicklungsumgebung ...
Inhaltsverzeichnis 1. Definition und Aufruf des K...
Shopify Plus ist die Enterprise-Version der von u...
Inhaltsverzeichnis Vorwort WebSocket verwenden Er...
Bei Ubuntu 20.04 ist die Root-Anmeldung standardm...
Inhaltsverzeichnis 1. Geben Sie einen Wert ein un...