Sobes.tech
Junior

Wie würdest du ein Zahlenarray sortieren?

sobes.tech KI

Antwort von AI

// Verwendung der Methode sort() mit einer Vergleichsfunktion
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Aufsteigende Sortierung

// Für absteigende Sortierung:
// numbers.sort((a, b) => b - a);

Die Methode sort() in JavaScript sortiert die Elemente des Arrays vor Ort. Standardmäßig wandelt sie die Elemente in Strings um und sortiert sie lexikografisch. Um Zahlen korrekt zu sortieren, muss eine Vergleichsfunktion an sort() übergeben werden.

Die Vergleichsfunktion nimmt zwei Argumente, a und b.

  • Gibt die Funktion eine negative Zahl zurück, kommt a vor b.
  • Gibt sie eine positive Zahl zurück, kommt b vor a.
  • Gibt sie 0 zurück, ändert sich die Reihenfolge der Elemente nicht.

Zum Sortieren von Zahlen in aufsteigender Reihenfolge verwendet man (a, b) => a - b. Wenn a kleiner als b ist, ist das Ergebnis negativ, und a kommt vor b. Zum Sortieren in absteigender Reihenfolge verwendet man (a, b) => b - a. Wenn b kleiner als a ist, ist das Ergebnis positiv, und b kommt vor a.

Andere Methoden (weniger häufig für einfache numerische Arrays, aber nützlich):

  • localeCompare()-Methode für Strings mit Zahlen:

    // Nicht empfohlen für reine Zahlen, aber kann verwendet werden
    // wenn Zahlen als Strings vorliegen und die Lokalisierung berücksichtigt werden soll.
    const stringNumbers = ["10", "2", "1"];
    stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
    // Sortiert als [ "1", "2", "10" ]
    
  • Erstellen einer Kopie des Arrays vor dem Sortieren:

    // Wenn das Original-Array erhalten bleiben soll
    const originalNumbers = [4, 2, 5, 1, 3];
    const sortedNumbers = [...originalNumbers].sort((a, b) => a - b);
    // oder
    // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);