JavaScript Array sort ()

Die JavaScript Array sort () -Methode sortiert die Elemente eines Arrays.

Die sort()Methode sortiert die Elemente eines bestimmten Arrays in einer bestimmten aufsteigenden oder absteigenden Reihenfolge.

Die Syntax der sort()Methode lautet:

 arr.sort(compareFunction)

Hier ist arr ein Array.

sort () Parameter

Die sort()Methode umfasst:

  • compareFunction (optional) - Hiermit wird eine benutzerdefinierte Sortierreihenfolge definiert.

Rückgabewert von sort ()

  • Gibt das Array zurück, nachdem die Elemente des Arrays an Ort und Stelle sortiert wurden (was bedeutet, dass das ursprüngliche Array geändert wird und keine Kopie erstellt wird).

Beispiel 1: Sortieren der Elemente eines Arrays

Wenn compareFunction nicht übergeben wird,

  • Alle Nicht- undefinedArray-Elemente werden zuerst in Zeichenfolgen konvertiert.
  • Diese Zeichenfolgen werden dann mit ihrem UTF-16-Codepunktwert verglichen.
  • Die Sortierung erfolgt in aufsteigender Reihenfolge.
  • Alle undefinedElemente werden bis zum Ende des Arrays sortiert.
 // sorting an array of strings var names = ("Adam", "Jeffrey", "Fabiano", "Danil", "Ben"); // returns the sorted array console.log(names.sort()); // modifies the array in place console.log(names); var priceList = (1000, 50, 2, 7, 14); priceList.sort(); // Number is converted to string and sorted console.log(priceList)

Ausgabe

 ("Adam", "Ben", "Danil", "Fabiano", "Jeffrey") ("Adam", "Ben", "Danil", "Fabiano", "Jeffrey") (1000, 14, 2, 50) , 7)

Hier können wir sehen, dass das Namensarray in aufsteigender Reihenfolge der Zeichenfolge sortiert ist. Zum Beispiel kommt Adam vor Danil, weil "A" vor "D" steht.

Da alle nicht undefinierten Elemente vor dem Sortieren in Zeichenfolgen konvertiert werden, werden die NumberDatentypen in dieser Reihenfolge sortiert.

Hier können wir sehen, dass 1000 zwar größer als 50 ist , aber am Anfang der sortierten Liste steht. Es ist, weil "1" <"5" .

Beispiel 2: Sortieren mit benutzerdefinierten Funktionen

Wenn compareFunction übergeben wird,

  • Alle Nicht- undefinedArray-Elemente werden nach dem Rückgabewert von compareFunction sortiert.
  • Alle undefinierten Elemente werden bis zum Ende des Arrays sortiert, und compareFunction wird für sie nicht aufgerufen.

Angenommen, wir möchten das obige Namensarray so sortieren, dass der längste Name an letzter Stelle steht, anstatt ihn alphabetisch zu sortieren. Wir können es folgendermaßen tun:

 // custom sorting an array of strings var names = ("Adam", "Jeffrey", "Fabiano", "Danil", "Ben"); function len_compare(a, b)( return a.length - b.length; ) // sort according to string length names.sort(len_compare); console.log(names);

Ausgabe

 ('Ben', 'Adam', 'Danil', 'Jeffrey', 'Fabiano')

Hier basiert die Sortierung auf der Logik a.length - b.length. Dies bedeutet im Grunde, dass der Artikel mit der kürzeren Länge am Anfang des angezeigt wird Array.

Lassen Sie uns zunächst verstehen, wie die Option compareFunctionfunktioniert.

Jeder compareFunctionhat die folgende Syntax:

 function (a, b)( // sorting logic // return a Number )

Die sort()Methode vergleicht alle Werte des Arrays, indem zwei Werte gleichzeitig an das übergeben werden compareFunction. Die beiden Parameter a und b repräsentieren diese beiden Werte.

Das compareFunctionsollte a zurückgeben Number. Dieser zurückgegebene Wert wird verwendet, um die Elemente folgendermaßen zu sortieren:

  • Wenn der zurückgegebene Wert <0 ist , wird a vor b sortiert (a kommt vor b).
  • Wenn der zurückgegebene Wert> 0 ist , wird b vor a sortiert (b steht vor a).
  • Wenn der Rückgabewert == 0 ist , bleiben a und b relativ zueinander unverändert.

In Beispiel 2 sortieren wir das Array mit:

 function len_compare(a, b)( return a.length - b.length; )

Hier:

  • Wenn a.length - b.length <0 ist , steht a vor b. Zum Beispiel steht "Adam" vor "Jeffrey" als 4 - 7 <0 .
  • Wenn a.length - b.length> 0 ist , steht b vor a. Zum Beispiel kommt "Danil" nach "Ben" als 5 - 3> 0.
  • Wenn a.length - b.length == 0 ist , bleibt ihre Position unverändert. Zum Beispiel ist die relative Position von "Jeffrey" und "Fabiano" unverändert, weil 7 - 7 == 0 .

Wir können sehen, dass dies dazu führt, dass Zeichenfolgen nach ihrer Länge in aufsteigender Reihenfolge sortiert werden.

Beispiel 3: Zahlen numerisch sortieren

Da alle nicht undefinierten Elemente vor dem Sortieren in Zeichenfolgen konvertiert werden, können wir Zahlen standardmäßig nicht anhand ihres numerischen Werts sortieren.

Mal sehen, wie wir dies mit einer benutzerdefinierten Funktion implementieren können.

 // numeric sorting // define array var priceList = (1000, 50, 2, 7, 14); // sort() using function expression // ascending order priceList.sort(function (a, b) ( return a - b; )); // Output: Ascending - 2,7,14,50,1000 console.log("Ascending - " + priceList); // sort() using arrow function expression // descending order priceList.sort((a, b) => b - a); // Output: Descending - 1000,50,14,7,2 console.log("Descending - " + priceList);

Ausgabe

 Aufsteigend - 2,7,14,50,1000 Absteigend - 1000,50,14,7,2

In diesem Beispiel haben wir das Array folgendermaßen sortiert:

 function (a, b) ( return a - b; )

Hier,

  • Wenn a - b <0 ist , steht a vor b. Zum Beispiel steht 2 vor 7 als 2 - 7 <0 .
  • Wenn a - b> 0 ist , steht b vor a. Zum Beispiel kommt 1000 nach 50 als 1000 - 50> 0.

Wir können sehen, dass dies zur Sortierung der Zahlen nach ihrem aufsteigenden numerischen Wert führt.

Ebenso können wir b - asie in absteigender Reihenfolge sortieren. Beachten Sie, dass wir auch den in ES2015 definierten Pfeilfunktionsausdruck verwenden können.

Wir können das sortierte Array auch mithilfe der integrierten Array- reverse()Methode umkehren (in absteigender Reihenfolge) . Weitere Informationen finden Sie unter JavaScript Array reverse ().

Interessante Beiträge...