Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der Sortierung von Javascript-Arrays_Grundkenntnisse

Detaillierte Erläuterung der Sortierung von Javascript-Arrays_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 16:33:111216Durchsuche

Wenn Sie schon länger mit JavaScript arbeiten, müssen Sie wissen, dass die Array-Sortierfunktion „Sort“ eine Methode im Array-Prototyp ist, nämlich array.prototype.sort(), sort(compareFunction), wobei „compareFunction“ eine ist Schauen wir uns eine Beschreibung von Mozilla MDN an:
Wenn „compareFunction“ nicht bereitgestellt wird, werden Elemente sortiert, indem sie in Zeichenfolgen umgewandelt und Zeichenfolgen in lexikografischer Reihenfolge („Wörterbuch“ oder „Telefonbuch“, nicht numerisch) verglichen werden. Beispielsweise kommt „80“ vor „9“ in lexikografischer Reihenfolge Reihenfolge, aber in einer numerischen Sortierung kommt 9 vor 80.

Sehen Sie sich unten einige einfache Beispiele an:

Code kopieren Der Code lautet wie folgt:

// Ausgabe [1, 2, 3]
console.log([3, 2, 1].sort());

// Ausgabe ["a", "b", "c"]
console.log(["c", "b", "a"].sort());

// Ausgabe [1, 2, „a“, „b“]
console.log(["b", 2, "a", 1].sort());


Wie Sie dem obigen Beispiel entnehmen können, wird im Wörterbuch standardmäßig nach alphabetischer Reihenfolge sortiert.

Glücklicherweise akzeptiert sort eine benutzerdefinierte Vergleichsfunktion, wie im folgenden Beispiel:

Code kopieren Der Code lautet wie folgt:

Funktion vergleichenFunktion(a, b) {
if( a > b) {
Rückgabe -1;
}else if(a < b) {
Rückgabe 1;
}else {
return 0;
}
}
//Ausgaben ["zuojj", "Benjamin", "1"]
console.log(["Benjamin", "1", "zuojj"].sort(compareFunction));

Nach dem Sortieren haben wir noch eine Frage: Wie steuert man die auf- und absteigende Reihenfolge?

Code kopieren Der Code lautet wie folgt:

Funktion CompareFunction(Flag) {
flag = flag ? flag : "asc";
Rückgabefunktion(a, b) {
if( a > b) {
Rückgabeflag === "desc" ? -1 : 1;
}else if(a < b) {
Rückgabeflag === "desc" ? 1 : -1;
}else {
Rückgabe 0;
}
};
}
//Ausgaben ["1", "Benjamin", "zuojj"]
console.log(["Benjamin", "1", "zuojj"].sort(compareFunction()));
//Ausgaben ["zuojj", "Benjamin", "1"]
console.log(["Benjamin", "1", "zuojj"].sort(compareFunction("desc")));

Die Sortierregeln von comparFunction lauten wie folgt:
1.Wenn eine negative Zahl zurückgegeben wird, wird a nach einem niedrigeren Index im Array sortiert.
2.Wenn eine positive Zahl zurückgegeben wird, wird a nach einem höheren Index sortiert.
3.Und wenn 0 zurückgegeben wird, ist keine Sortierung erforderlich.

Sehen wir uns einen Auszug aus Mozilla MDN an:
Das Verhalten der Sortiermethode hat sich zwischen JavaScript 1.1 und JavaScript 1.2 geändert.Um diese Beschreibung zu erklären, schauen wir uns ein Beispiel an:

In JavaScript 1.1 funktioniert die Sortiermethode auf einigen Plattformen nicht. Diese Methode funktioniert auf allen Plattformen für JavaScript 1.2.

In JavaScript 1.2 konvertiert diese Methode nicht mehr undefinierte Elemente, sondern sortiert sie am oberen Ende des Arrays. Bitte klicken Sie hier für Details.

Code kopieren Der Code lautet wie folgt:

var arr = [];
arr[0] = "Ant";
arr[5] = "Zebra";
//Ausgaben ["Ant", 5: "Zebra"]
console.log(arr);
//Ausgaben 6
console.log(arr.length);
//Gibt „Ant*****Zebra“
aus console.log(arr.join("*"));
//Sortieren
var sortArr = arr.sort();
//Ausgaben ["Ant", "Zebra"]
console.log(sortArr);
//Ausgaben 6
console.log(sortArr.length);
//Gibt „Ant*Zebra****“ aus
console.log(sortArr.join("*"));

Ich hoffe, dass dieser Artikel Ihnen dabei hilft, die Methode sort() zu erlernen und zu verstehen. Ich hoffe, dass Sie etwaige Unangemessenheiten im Artikel kritisieren und korrigieren.

Referenzlink: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn