Wenn es um die Tischsortierung geht, müssen wir als erstes sprechen, da das Array -Sortieren die Sortierung von Array -Sortieren ist.
JavaScript bietet eine Sort () -Methode für Arrays für die Tabellensortierung. Standardmäßig ordnen diese Methode die Arrays in Array in der Reihenfolge der ASCII -Codes an. JavaScript bietet auch eine Array Reverse () -Methode für Arrays.
Schauen Sie sich das Beispiel an:
Die Codekopie lautet wie folgt:
Funktion sortArray () {
var arrayTest = ["z", 5,2, "a", 32,3];
arrayTest.sort ();
alert (arrayTest.toString ()); // Ausgabe: 2,3,32,5, a, z
ArrayTest.Reverse ();
alert (arrayTest.toString ()); // Ausgabe: Z, A, 5,32,3,2
}
sortArray ();
Haha, 5 ist größer als 32, es ist offensichtlich, dass dies nicht das Ergebnis ist, das wir wollen. Ich habe gerade gesagt, dass die Sort () -Methode in der Reihenfolge des ASCII -Codes sortiert ist.
Tatsächlich ermöglicht die Sort () -Methode auch einen Funktionsparameter vom Typ, den wir eine Vergleichsfunktion aufrufen können. Wenn die Vergleichsfunktion zwei Parameter empfangen kann, gibt die folgende Funktion die Bedeutung des Werts zurück:
Die Codekopie lautet wie folgt:
-1: Der erste Parameter ist kleiner als der zweite Parameter
0: Der erste Parameter entspricht dem zweiten Parameter
1: Der erste Parameter ist größer als der zweite Parameter
Die Codekopie lautet wie folgt:
/**
* Vergleichsfunktion
* @param {Object} Param1 Param 1 zu vergleichen
* @param {Object} Param2 Param2 zum Vergleichen
* @return {number} Wenn Param1> Param2 zurückgibt 1
* Wenn Param1 == Param2 0 zurückgibt 0
* Wenn param1 <param2 -1 zurückgibt
*/
Funktion CompareFunc (param1, param2) {
// Wenn beide Parameter String -Typ sind
if (typeof param1 == "String" && typeof param2 == "String") {
return param1.localCompare (param2);
}
// Wenn Parameter 1 eine Zahl ist, ist Parameter 2 eine Zeichenfolge
if (typeof param1 == "number" && typeof param2 == "String") {
Return -1;
}
// Wenn Parameter 1 ein Zeichenfolge ist, ist Parameter 2 eine Zahl
if (typeof param1 == "String" && typeof param2 == "number") {
Rückkehr 1;
}
// Wenn beide Parameter Zahlen sind
if (typeof param1 == "number" && typeof param2 == "number") {
if (param1> param2) return 1;
if (param1 == param2) return 0;
if (param1 <param2) return -1;
}
}
Wenn wir ArrayTest.sort (CompareFunc) ausführen, erhalten wir das richtige Ergebnis.
Zu diesem Zeitpunkt müssen wir die Verwendung der LocalCompare () -Methode erklären, die eine Methode zum Sortieren von Zeichenfolgen ist, mit nur einem Parameter, nämlich die zu verglichene Zeichenfolge.
Die spezifische Erklärung lautet wie folgt:
1. Wenn das String -Objekt vor dem String im Parameter alphabetisch angeordnet ist, geben Sie eine negative Zahl zurück
2. Wenn das String -Objekt nach der Zeichenfolge im Parameter in der Zeichenreihenfolge angeordnet ist, geben Sie eine positive Zahl zurück
3. Wenn das String -Objekt gleich der Zeichenfolge im Parameter ist, gibt es 0 zurück.
Darüber hinaus verfügt die LocalEcompare () -Methode über eine weitere einzigartige Funktion. Dieses einzigartige Merkmal kann sich in seinem Gebietsschema der Methode Signature (vor Ort, lokal) widerspiegeln, dh seine Implementierung basiert auf regionalen Merkmalen. Wenn im englischen System seine Implementierung in einer aufsteigender Reihenfolge der Saiten erfolgt, basiert seine Implementierung auf dem Pinyin des ersten Buchstabens.
Haha, das bedeutet, dass auch wenn wir chinesische Charaktere in das Programm einbeziehen, unsere Sortierung nicht schief geht.
Siehe das folgende Programm:
Die Codekopie lautet wie folgt:
var testArray = ["Fuß", "Buch", "ite", "home"];
document.write (testArray.sort (
Funktionsvergleichsfunktion (param1, param2) {
return param1.localCompare (param2); // Ausgabe: 一, Zuhause, Buch, Fuß
}
));