Wenn es um die Tabellensortierung geht, muss zunächst über die Sortierung von Arrays gesprochen werden, da die Array-Sortierung die Grundlage der Tabellensortierung ist.
JavaScript stellt die Methode sort() für Arrays zum Sortieren von Tabellen bereit. Standardmäßig ordnet diese Methode die Arrays in der Reihenfolge der ASCII-Codes an.
Sehen Sie sich ein Beispiel an:
Funktion sortArray(){
var arrayTest = ["z",5,2,"a",32,3];
arrayTest.sort();
warning(arrayTest.toString()); //output:2,3,32,5,a,z
arrayTest.reverse();
warning(arrayTest.toString()); //output:z,a,5,32,3,2
}
sortArray();
Haha, 5 ist größer als 32. Offensichtlich ist dies nicht das gewünschte Ergebnis. Wie gerade erwähnt, sortiert die Methode sort() nach der Reihenfolge der ASCII-Codes.
Tatsächlich ermöglicht die Methode sort() auch einen Funktionstypparameter, den wir als Vergleichsfunktion bezeichnen können. Wenn die Vergleichsfunktion zwei Parameter empfangen kann, hat der Rückgabewert der Funktion folgende Bedeutung:
-1: Der erste Parameter ist kleiner als der zweite Parameter
0: Der erste Parameter ist gleich dem zweiten Parameter
1: Der erste Parameter ist größer als der zweite Parameter
/**
* Vergleichsfunktion
* @param {Object} param1 Zu vergleichender Parameter 1
* @param {Object} param2 Zu vergleichender Parameter 2
* @return {Number} Wenn param1 > param2 1 zurückgibt
* raus raus raus kann sein
* Wenn param1 < param2 zurückgibt -1
*/
Funktion CompareFunc(param1,param2){
//Wenn beide Parameter String-Typen sind
If(typeof param1 == "string" && typeof param2 == "string"){
return param1.localeCompare(param2);
}
//Wenn Parameter 1 eine Zahl ist, ist Parameter 2 eine Zeichenfolge
If(typeof param1 == "number" && typeof param2 == "string"){
return -1;
}
//Wenn Parameter 1 eine Zeichenfolge und Parameter 2 eine Zahl ist
If(typeof param1 == "string" && typeof param2 == "number"){
Rückgabe 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.
An dieser Stelle müssen wir die Verwendung der Methode localeCompare() erklären. Diese Methode ist eine Methode zum Sortieren von Zeichenfolgen. Sie hat nur einen Parameter, nämlich die zu vergleichende Zeichenfolge.
Die spezifischen Anweisungen lauten wie folgt:
1. Wenn das String-Objekt alphabetisch vor der Zeichenfolge im Parameter angeordnet ist, wird eine negative Zahl zurückgegeben
2. Wenn das String-Objekt in Zeichenreihenfolge nach der Zeichenfolge im Parameter angeordnet ist, wird eine positive Zahl
zurückgegeben
3. Wenn das String-Objekt gleich der Zeichenfolge im Parameter ist, geben Sie 0
zurück
Darüber hinaus verfügt die Methode localeCompare() über ein weiteres einzigartiges Merkmal, das sich in ihrer Methodensignatur locale (lokal, lokal) widerspiegeln kann, was bedeutet, dass ihre Implementierung auf regionalen Merkmalen basiert, wenn sie im englischen System vorliegt , seine Implementierung kann in aufsteigender Reihenfolge der Zeichenfolgen erfolgen, im Chinesischen kann seine Implementierung in Übereinstimmung mit dem Pinyin des ersten Buchstabens erfolgen.
Haha, das bedeutet, dass unsere Sortierung nicht schief geht, selbst wenn wir chinesische Schriftzeichen in das Programm einbeziehen.
Beachten Sie die folgenden Verfahren:
Code kopieren Der Code lautet wie folgt:
var testArray = ["foot","本","之","家"];
document.write(testArray.sort(
fonction compareFunction(param1,param2){
Return Param1.Localecompare (Param2); // Sortie :, maison, livre, pieds
}
));