navigation Navigation


Array.prototype.sort()


Die Methode Array.prototype.sort() wird verwendet, um die Elemente eines Arrays in-place (d.h. direkt im Original-Array) zu sortieren. Diese Methode gibt das sortierte Array zurück.

Ein Schlüsselmerkmal von sort() ist, dass sie standardmäßig Elemente als String sortiert, selbst, wenn die Elemente Zahlen sind. Aus diesem Grund führt die Methode manchmal zu unerwarteten Ergebnissen, wenn man Zahlen sortiert. Um das Verhalten zu kontrollieren, kann ein benutzerdefinierter Vergleichsalgorithmus in Form einer Callback-Funktion übergeben werden.

Syntax

Syntax
Array.prototype.sort();
Array.prototype.sort(compareFn);
Parameter
compareFn

(Optional) Eine Funktion, die zwei Argumente erhält und bestimmt, in welcher Reihenfolge die Elemente sortiert werden sollen.

  • a: Erstes Element für den Vergleich.
  • b: Zweites Element für den Vergleich.wurde.

Rückgabewert

Eine Referenz auf das Original-Array. Die Methode verändert das Array in-place.

Beispiele

Einfaches Sortieren

Beispiel
const nums = [100, 25, 1, 15, 5];
nums.sort();
console.log(nums);
[ 1, 100, 15, 25, 5 ]

Numerische Sortierung - Vergleich

Wenn man die sort() Methode ohne compareFn verwendet, kann es sein, dass die Sortierung nicht den erwarteten Ergebnissen entspricht.

Beispiel: Ohne compareFn
const nums = [10, 5, 100, 1];
nums.sort();
console.log(nums);
[ 1, 10, 100, 5 ]

In diesem Beispiel ist mathematische Reihenfolge nicht korrekt.

Im nächten Beispiel wird compareFn verwendet.

Beispiel: Mit compareFn
const nums = [10, 5, 100, 1];
nums.sort((a, b) => a - b);
console.log(nums);
[ 1, 5, 10, 100 ]

Sortieren in absteigender Reihenfolge

Beispiel
const nums = [100, 25, 1, 15, 5];

nums.sort(function(a, b) {
    return b - a;
});

console.log(nums);
[ 100, 25, 15, 5, 1 ]

Sortieren von Objekten

Beispiel
const users = [
    { name: 'John', age: 25 },
    { name: 'Jane', age: 20 },
    { name: 'Alice', age: 30 }
];

users.sort(function(a, b) {
    return a.age - b.age;
});

console.log(users);
[
    { name: 'Jane', age: 20 },
    { name: 'John', age: 25 },
    { name: 'Alice', age: 30 }
]

Sortieren von Zeichenketten

Standardmäßig sortiert sort() Zeichenketten lexographisch. Es gibt jedoch Fälle, in denen man eine benutzerdefinierte Sortierlogik für Zeichenketten verwenden möchte, z.B. wenn die Groß- und Kleinschreibung ignoriert werden soll.

Beispiel
const words = ["Banana", "apple", "Cherry"];

words.sort(function(a, b) {
    return a.toLowerCase().localeCompare(b.toLowerCase());
});

console.log(words);
[ 'apple', 'Banana', 'Cherry' ]

Sortieren einer Kopie eines Arrays

Die Methode sortiert das Array direkt. Wenn man das ursprüngliche Array nicht verändern möchte, soll man zuerst eine Kopie des Arrays erstellen, bevor man die Methode anwendet.

Beispiel
const originalArray = [3, 1, 4, 2];
const sortedArray = [...originalArray].sort();

console.log(originalArray);
console.log(sortedArray);
[ 3, 1, 4, 2 ]
[ 1, 2, 3, 4 ]