JavaScript/Objekte/Array/sort

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Die Methode Array.sort ordnet die Elemente eines Arrays.

  • JavaScript 1.1
  • IE
  • Firefox
  • Chrome
  • Safari
  • Opera

Syntax

sort([Vergleichsfunktion])


Folgende Parameter sind nötig:

  • Vergleichsfunktion: eine Vergleichsfunktion um zwei Elemente miteinander auf Äquivalenz zu vergleichen

Rückgabewert ist das gerade sortierte Array.

Beschreibung[Bearbeiten]

Wenn keine Vergleichsfunktion übergeben wird, dann werden für die Sortierung die Elemente für einen lexikographischen Vergleich in Zeichenketten konvertiert. Diese Konvertierung gilt nur für den Vergleich, die Elemente an sich bleiben im Array dabei unverändert.

Beispiel
var namen  = ['Ina', 'Bettina', 'Tina', 'Martina']; 
var zahlen = [27, 2, 10, 4]; 

namen.sort(); 
zahlen.sort();

console.log(namen.join(","));  // 'Bettina,Ina,Martina,Tina'
console.log(zahlen.join(",")); // '10,2,27,4'
Das Beispiel zeigt die Sortierung von Zeichenketten und numerischen Werten.
Beachten Sie, dass die Zahlen des zweiten Arrays ebenfalls alphabetisch und nicht numerisch sortiert worden sind. So steht die 27 wegen der 2 als Anfangszeichen vor der 4!
Zum numerischen Sortieren von Zahlen benötigen Sie eine integrierte Vergleichsfunktion.


Beachten Sie: Bei der Standardsortierung erfolgt eine aufsteigende Sortierung. Für eine absteigende Sortierung kann eine entsprechende Vergleichsfunktion festgelegt werden oder es wird nach der Sortierung die reverse-Methode aufgerufen, um die Reihenfolge umzukehren.

Anwendungsbeispiel[Bearbeiten]

Sortieren von Zeichenketten[Bearbeiten]

Beispiel ansehen …
function anhaengen() {
  var eingabe = document.getElementById("input"),
  ul = document.getElementById("ausgabe");
  if (eingabe && ausgabe && eingabe.value.length > 0) {
    farben.push(eingabe.value);
  }
}

farben.sort();
Dieses Beispiel besteht aus einer Webseite mit einem Formular mit einem input-Element. In dieses können Sie neue Begriffe eingeben.

Diese Eingabe wird dann an den Array farben mit der Methode Array.push angehängt. Anschließend wird der Array mit Array.sort aufsteigend sortiert.

Der so entstandene sortierte Array wird dann mit ForEach durchlaufen und jedes Array-Element in einem Listenelement li in die Webseite geschrieben.

Sortieren von numerischen Werten[Bearbeiten]

Beispiel ansehen …
var zahlen = [27, 2, 10, 4, 42, 7]; 
 
function sortieren() {
  zahlen.sort(sortNumber);
  var ausgabeText = zahlen.join(", ");
  var ausgabe = document.getElementById('ausgabe');
  ausgabe.innerHTML = ausgabeText;
}
 
function sortNumber(a,b) {
    return a - b;
}
Um die Elemente des aus Zahlen bestehenden Arrays numerisch zu sortieren, müssen Sie der Methode sort eine Vergleichsfunktion übergeben. Die Funktion sortNumber() überprüft jeweils zwei Elemente a und b, ob sie größer (+1) gleich (0) oder kleiner (-1) sind.
Anschließend werden die Elemente des Arrays mit Arrray.join zu einer Zeichenkette zusammengefügt. Der Trennungstext besteht aus einem Komma und einem folgenden Leerzeichen.


Regeln und Vergleichsfunktionen[Bearbeiten]

Beim Vergleich auf Äquivalenz zweier Elemente gelten folgende Regeln:

  • Ist das erste zu vergleichende Element kleiner dem zweiten zu vergleichenden Element, dann ist das Ergebnis des Vergleichs kleiner 0 (Null) (Normalerweise -1).
  • Ist das erste zu vergleichende Element gleich dem zweiten zu vergleichenden Element, dann ist das Ergebnis des Vergleichs gleich 0 (Null).
  • Ist das erste zu vergleichende Element größer dem zweiten zu vergleichenden Element, dann ist das Ergebnis des Vergleichs größer 0 (Null) (Normalerweise 1).
Beispiel
// Vergleichsfunktion
function descending(a, b) 
{
  if (a < b)
  {
    return 1;
  }

  if (a > b)
  {
    return -1;
  }

  return 0; 
}

var namen  = new Array('Ina', 'Bettina', 'Tina', 'Martina'); 

namen.sort(descending); 

alert(namen.join(','));  // 'Tina,Martina,Ina,Bettina'

Das Beispiel zeigt eine absteigende Sortierung durch eine benutzerdefinierte Vergleichsfunktion. In der Vergleichsfunktion werden die Regeln vertauscht um die Zeichenketten absteigend zu sortieren.


In den meisten modernen Browsern führen die implementierten Algorithmen für die Sortierung eine stabile Sortierung durch. Eine stabile Sortierung bedeutet, dass die Elemente bei Gleichheit ihre Reihenfolge beibehalten, die sie auch vor der Sortierung im Array hatten.

Weblinks[Bearbeiten]