Heim > Web-Frontend > js-Tutorial > Zusammenfassung und Vergleich mehrerer Array-Traversal-Methoden in JS

Zusammenfassung und Vergleich mehrerer Array-Traversal-Methoden in JS

php中世界最好的语言
Freigeben: 2018-04-28 15:22:01
Original
1985 Leute haben es durchsucht

Dieses Mal werde ich mehrere JS-Array-Traversal-Methoden zusammenfassen und vergleichen. Welche Vorsichtsmaßnahmen werden mit mehreren JS-Array-Traversal-Methoden zusammengefasst und verglichen? sehen.

Vorwort

Dieser Artikel gehört zur gleichen Reihe wie der vorherige Artikel über mehrere JS-Variablenaustauschmethoden und den Vergleich der Leistungsanalyse. Dieser Artikel wird fortgesetzt die Analyse. Mehrere häufig verwendete Array-Traversal-Methoden in JS und ihre jeweiligen Leistungsvergleiche

ab

Zuletzt haben wir mehrere analysiert Häufig verwendete Variablen in JS Nachdem ich die Methoden und ihre jeweiligen Leistungen ausgetauscht hatte, hatte ich das Gefühl, dass diese Methode recht gut war, also extrahierte ich die Kernlogik, kapselte sie in eine Vorlage und plante, sie zu einer Serie zu erweitern. Dieser Artikel ist der zweite Artikel in der Reihe, eine Analyse und ein Vergleich von JS-Array-Traversal-Methoden

Mehrere Möglichkeiten des JS-Array-Traversal

JS-Array-Traversal, grundsätzlich für , forin, foreach, forof, map usw. Im Folgenden werden verschiedene Array-Traversal-Methoden vorgestellt, die in der Analyse dieses Artikels sowie in der Leistungsanalyse und im Vergleich verwendet werden

Der erste Typ: gewöhnliche for-Schleife

Der Code lautet wie folgt:

for(j = 0; j < arr.length; j++) {
}
Nach dem Login kopieren

Kurze Beschreibung: Der einfachste und am häufigsten verwendete Code. Obwohl die Leistung nicht schwach ist, gibt es noch Raum für Optimierung

Der zweite Typ: optimierte Version der for-Schleife

Der Code lautet wie folgt:

for(j = 0,len=arr.length; j < len; j++) {
}
Nach dem Login kopieren

Kurze Beschreibung: Verwenden Sie temporäre Variablen, um die Länge zwischenzuspeichern, um ein wiederholtes Abrufen der zu vermeiden Array-Länge Der Optimierungseffekt wird deutlicher, wenn das Array größer ist.

Diese Methode ist im Grunde die leistungsstärkste unter allen Schleifendurchlaufmethoden

Der dritte Typ: abgeschwächte Version der for-Schleife

Der Code lautet wie folgt :

for(j = 0; arr[j]!=null; j++) {
}
Nach dem Login kopieren

Kurze Beschreibung: Diese Methode ist eigentlich eine reine for-Schleife, verwendet jedoch nicht die Längenbeurteilung, sondern die Variable selbst zur Beurteilung

Tatsächlich die Leistung dieser Methode ist viel kleiner als die gewöhnliche for-Schleife

Der vierte Typ: foreach-Schleife

Der Code lautet wie folgt:

arr.forEach(function(e){
});
Nach dem Login kopieren

Kurze Beschreibung: Die foreach Schleife, die mit dem Array geliefert wird, wird häufiger verwendet und ist tatsächlich schwächer als die gewöhnliche for-Schleife

Der fünfte Typ: foreach-Variante

Der Code lautet wie folgt:

Array.prototype.forEach.call(arr,function(el){
});
Nach dem Login kopieren

Kurze Beschreibung: Da foreach mit dem Array-Typ geliefert wird, können einige nicht zu diesem Typ gehörende Typen nicht direkt verwendet werden (z. B. NodeList), sodass diese Variante erstellt werden kann. Die Verwendung dieser Variante kann ähnliche Arrays ermöglichen die foreach-Funktion haben.

Die tatsächliche Leistung ist schwächer als bei gewöhnlichem foreach

Der sechste Typ: Forin-Schleife

Der Code lautet wie folgt:

for(j in arr) {
}
Nach dem Login kopieren

Kurze Beschreibung: Viele Leute verwenden diese Schleife gerne, aber nach Analyse und Tests ist ihre Effizienz unter den vielen Schleifendurchlaufmethoden

am niedrigsten

Siebtens: Karte Durchquerung

Der Code lautet wie folgt:

arr.map(function(n){
});
Nach dem Login kopieren

Kurze Beschreibung: Diese Methode ist zwar ebenfalls weit verbreitet, aber die tatsächliche Effizienz ist nicht so gut wie bei foreach

Achter Typ: forof traversal (erfordert ES6-Unterstützung)

Der Code lautet wie folgt:

for(let value of arr) {
});
Nach dem Login kopieren

Kurze Beschreibung: Diese Methode wird in es6 verwendet , und seine Leistung ist besser als bei Forin, aber immer noch nicht so gut wie die gewöhnliche for-Schleife

Leistungsvergleich verschiedener Traversalmethoden

Oben sind mehrere Methoden aufgeführt. Nachdem wir eine vergleichende Analyse durchgeführt haben, können wir grundsätzlich zu folgendem Schluss kommen:

Die gewöhnliche for-Schleife ist die eleganteste

(PS : Alle oben genannten Codes führen lediglich eine leere Schleife aus, es gibt keinen internen Ausführungscode in der Schleife, analysieren Sie einfach die Zeit jeder Schleife)

Screenshot zum Leistungsvergleich

Analyseergebnis 1

Die Daten im Screenshot unten sind die Schlussfolgerung, die nach 100-maliger Ausführung in Chrome (unterstützt es6) gezogen wurde (jeweils 10-malige Ausführung, insgesamt 10 Schleifen, Analyseergebnisse)

Es ist ersichtlich, dass die Forin-Schleife am langsamsten ist. Die optimierte gewöhnliche for-Schleife ist am schnellsten

Analyseergebnis 2

Die folgenden Screenshot-Daten sind die Schlussfolgerung nach 1000-maliger Ausführung in Chrome (unterstützt es6) (Run 100 Mal, insgesamt 10 Zyklen, die erhaltenen Analyseergebnisse)

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie unter Bitte achten Sie auf PHP-Chinesisch. Andere verwandte Artikel online!

Empfohlene Lektüre:

Detaillierte Erläuterung der Konstruktionsschritte des Koa-Projekts

JS-Implementierung der Schnittstelle zum Drucken von Textschriften

Das obige ist der detaillierte Inhalt vonZusammenfassung und Vergleich mehrerer Array-Traversal-Methoden in JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage