JavaScript-Array-Sortierung

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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

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>

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus