JavaScript-Array-Sortierung
- Vorherige Seite JS-Array-Suche
- Nächste Seite JS-Array-Iteration
sort()
Diese Methode ist eine der mächtigsten Array-Methoden.
Array Sorting
sort()
Die Methode sortiert das Array in alphabetischer Reihenfolge:
Beispiel
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Sortiert die Elemente im Array fruits
Array umkehren
reverse()
Methode kehrt die Elemente im Array um.
Sie können es verwenden, um das Array in absteigender Reihenfolge zu sortieren:
Beispiel
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Sortiert die Elemente im Array fruits fruits.reverse(); // Umkehrt die Elementreihenfolge
Numerische Sortierung
Standardmäßigsort()
Funktion sortiertStringsReihenfolge der Werte sortiert.
Diese Funktion ist besonders gut für Strings geeignet ("Apple" wird vor "Banana" stehen).
Allerdings, wenn Zahlen als Strings sortiert werden, ist "25" größer als "100", weil "2" größer als "1" ist.
Dahersort()
Methode erzeugt falsche Ergebnisse beim Sortieren von numerischen Werten.
Wir verwenden eineVerhältnisfunktionUm dieses Problem zu beheben:
Beispiel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
Verwenden Sie die gleiche Technik, um die Array in absteigender Reihenfolge zu sortieren:
Beispiel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a});
Verhältnisfunktion
Das Ziel der Vergleichsfunktion ist es, eine andere Sortierreihenfolge zu definieren.
Die Vergleichsfunktion sollte einen negativen, null oder positiven Wert zurückgeben, abhängig von den Parametern:
function(a, b){return a-b}
Wenn sort()
Wenn eine Funktion zwei Werte vergleicht, sendet sie diese an die Vergleichsfunktion und sortiert die Werte basierend auf dem zurückgegebenen Wert (Negativ, Null oder Positiv).
Beispiel:
Wenn 40 und 100 verglichen werden:sort()
Die Methode ruft die Vergleichsfunktion function(40,100) auf.
Die Funktion berechnet 40-100 und gibt -60 (Negativwert) zurück.
Die Sortierfunktion sortiert 40 als niedrigeren Wert als 100.
Sie können den folgenden Code-Abschnitt verwenden, um numerische und alphabetische Sortierung zu testen:
<button onclick="myFunction1()">Nach alphabetischer Reihenfolge sortieren</button> <button onclick="myFunction2()">Nach numerischer Reihenfolge sortieren</button> <p id="demo"></p> <script> var points = [40, 100, 1, 5, 25, 10]; document.getElementById("demo").innerHTML = points; function myFunction1() { points.sort(); document.getElementById("demo").innerHTML = points; } function myFunction2() { points.sort(function(a, b){return a - b}); document.getElementById("demo").innerHTML = points; } </script>
Das Array in zufälliger Reihenfolge sortieren
Beispiel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
Den höchsten (oder niedrigsten) Wert im Array finden
JavaScript bietet keine eingebauten Funktionen zum Finden des größten oder kleinsten Wertes in einem Array.
Nachdem Sie das Array sortiert haben, können Sie die Indizes verwenden, um den höchsten oder niedrigsten Wert zu erhalten.
Aufsteigende Sortierung:
Beispiel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // Jetzt enthält points[0] den niedrigsten Wert // Und points[points.length-1] enthält den höchsten Wert
Absteigende Sortierung:
Beispiel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // Jetzt enthält points[0] den höchsten Wert // Und points[points.length-1] enthält den niedrigsten Wert
Wenn Sie nur den höchsten oder niedrigsten Wert finden möchten, ist das Sortieren des gesamten Arrays eine äußerst ineffiziente Methode.
Math.max() auf das Array anwenden
Sie können Math.max.apply
um den höchsten Wert im Array zu finden:
Beispiel
function myArrayMax(arr) { return Math.max.apply(null, arr); }
Math.max.apply([1, 2, 3])
ist gleich Math.max(1, 2, 3)
.
Math.min() auf das Array anwenden
Sie können Math.min.apply
um den niedrigsten Wert im Array zu finden:
Beispiel
function myArrayMin(arr) { return Math.min.apply(null, arr); }
Math.min.apply([1, 2, 3])
ist gleich Math.min(1, 2, 3)
.
Meine Min/Max JavaScript-Methode
Der schnellste Lösungsweg ist die Verwendung eines "selbstgemachten" Verfahrens.
Diese Funktion durchläuft das Array und vergleicht den gefundenen höchsten Wert mit jedem Wert:
Beispiel (Max finden)
function myArrayMax(arr) { var len = arr.length var max = -Infinity; while (len--) { if (arr[len] > max) { max = arr[len]; } } return max; }
Diese Funktion durchläuft das Array und vergleicht den gefundenen niedrigsten Wert mit jedem Wert:
Beispiel (Min finden)
function myArrayMin(arr) { var len = arr.length var min = Infinity; while (len--) { if (arr[len] < min) { min = arr[len]; } } return min; }
Sortieren Sie Objekt-Arrays
JavaScript-Arrays enthalten oft Objekte:
Beispiel
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];
Selbst wenn Objekte unterschiedliche Datentypen von Attributen haben:sort()
Diese Methode kann weiterhin zum Sortieren von Arrays verwendet werden.
Die Lösung besteht darin, einen Vergleichsfunktion zu verwenden, um Attributwerte zu vergleichen:
Beispiel
cars.sort(function(a, b){return a.year - b.year});
Der Vergleich von Zeichenfolgen-Attributen ist etwas komplexer:
Beispiel
cars.sort(function(a, b){ var x = a.type.toLowerCase(); var y = b.type.toLowerCase(); if (x < y) {return -1;} if (x > y) {return 1;} return 0; });
- Vorherige Seite JS-Array-Suche
- Nächste Seite JS-Array-Iteration