Wenn Sie schon eine Weile in JavaScript waren, müssen Sie wissen, dass die Sortierung der Array -Sortierfunktion eine Methode im Array -Prototyp ist, nämlich Array.Prototype.sort (), sortieren (komparische Funktionen), wobei CompareFunction eine Vergleichsfunktion ist. Schauen wir uns eine Beschreibung von Mozilla MDN an:
Wenn keine Vergleichsfunktion geliefert wird, werden Elemente sortiert, indem sie in Saiten umwandeln und Zeichenfolgen in lexikografischer ("Wörterbuch" oder "Telefonbuch", nicht numerisch). Zum Beispiel kommt "80" vor "9" in lexikografischer Reihenfolge, aber in einer numerischen Art 9 kommt vor 80.
Hier sind einige einfache Beispiele:
Die Codekopie 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 aus dem obigen Beispiel ersichtlich ist, wird der Standard in der alphabetischen Reihenfolge des Wörterbuchs sortiert.
Glücklicherweise akzeptiert Sortierung eine benutzerdefinierte Vergleichsfunktion, wie im folgenden Beispiel gezeigt:
Die Codekopie lautet wie folgt:
Funktionsvergleich (a, b) {
if (a> b) {
Return -1;
} else if (a <b) {
Rückkehr 1;
}anders {
Rückkehr 0;
}
}
// Ausgibt ["Zuojj", "Benjamin", "1"]
console.log (["Benjamin", "1", "Zuojj"]. Sortieren (vergleichen));
Nach dem Sortieren haben wir eine andere Frage: Wie kann ich aufsteigende und absteigende Reihenfolge kontrollieren?
Die Codekopie lautet wie folgt:
Funktion CompareFunction (Flag) {
Flag = Flag? Flagge: "ASC";
Rückgabefunktion (a, b) {
if (a> b) {
Return Flag === "Desc"? -1: 1;
} else if (a <b) {
Return Flag === "Desc"? 1: -1;
}anders {
Rückkehr 0;
}
};
}
// Ausgibt ["1", "Benjamin", "Zuojj"]
console.log (["benjamin", "1", "zuojj"]. sort (compareFunction ()));
// Ausgibt ["Zuojj", "Benjamin", "1"]
console.log (["benjamin", "1", "zuojj"]. sort (compareFunction ("desc"));
Die Sortierregeln für Vergleichsfunktionen sind wie folgt:
1. Wenn es eine negative Zahl zurückgibt, wird A im Array auf einen niedrigeren Index sortiert.
2. Wenn es eine positive Zahl zurückgibt, wird A auf einen höheren Index sortiert.
3. Und wenn es zurückgibt, ist keine Sortierung erforderlich.
Schauen wir uns einen Auszug aus Mozilla MDN an:
Das Verhalten der Sortiermethode änderte sich zwischen JavaScript 1.1 und JavaScript 1.2. 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 wandelt diese Methode nicht mehr undefinierte Elemente in Null um; Stattdessen sortiert es sie bis zum oberen Ende des Arrays. Bitte klicken Sie hier für Details.
Die Codekopie lautet wie folgt:
var arr = [];
arr [0] = "Ant";
arr [5] = "Zebra";
// Ausgänge ["Ant", 5: "Zebra"]
console.log (arr);
// Ausgänge 6
console.log (arr.length);
// Ausgänge "Ant ****** Zebra"
console.log (arr.join ("*"));
//Sortieren
var sortarr = arr.sort ();
// Ausgänge ["Ant", "Zebra"]
console.log (sortarr);
// Ausgänge 6
console.log (sortarr.length);
// Ausgibt "Ant*Zebra ****"
console.log (sortarr.join ("*"));
Ich hoffe, dieser Artikel wird für Sie hilfreich sein, um die Sort () -Methode zu lernen und zu verstehen. Ich hoffe, Sie werden unangemessene Aspekte im Artikel kritisieren und korrigieren.
Referenzlink: https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/array/sort