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 im Array in der Reihenfolge der ASCII-Codes an.
Schauen Sie sich das Beispiel an:
1 function sortArray(){
2 var arrayTest = ["z",5,2,"a",32,3];
3 arrayTest. sort();
4 Alert(arrayTest.toString()); //output:2,3,32,5,a,z
5 arrayTest.reverse();
6 Alert (arrayTest. toString()); //output:z,a,5,32,3,2
7 }
8 sortArray();
Haha, 5 ist größer als 32, Offensichtlich ist dies nicht das gewünschte Ergebnis. Wie wir gerade gesagt haben, sortiert die Methode sort() nach der Reihenfolge der ASCII-Codes. Tatsächlich ermöglicht die Methode sort() auch einen Parameter vom Funktionstyp, 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
Sehen Sie sich ein Beispiel an:
1 /**
2 * Vergleichsfunktion
3 * * @param {Object} param1 Zu vergleichender Parameter 1
4 * @param {Object} param2 Zu vergleichender Parameter 2
5 * @return {N umber } if Param1 & GT; Return 1
6*If Param1 == Param2 Return 0
7*If Param1 & LT; Return 0
8*/
9 function CompareFunc(param1,param2){
10 string" && typeof param2 == "string"){
12 return param1.localeCompare(param2 );
13 }
14 //Wenn Parameter 1 eine Zahl ist, ist Parameter 2 eine Zeichenfolge
15 if(typeof param1 == "number" && typeof param2 == "string"){
16 return -1;
17 }
18 //Wenn Parameter 1 eine Zeichenfolge ist, ist Parameter 2 eine Zahl
19 //Wenn beide Parameter Zahlen sind
23 Wenn (Typeof Param1 == "Number" && Typeof Param2 == "Number") {
24 if (Param1 & GT; Param2) Return 1;
25 if (Param1 == Param2) Return 0; >26 If(param1 < param2) return -1;
27 }
28 }
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 in alphabetischer Reihenfolge vor der Zeichenfolge im Parameter angeordnet ist, wird eine negative Zahl zurückgegeben
2. Wenn das String-Objekt in alphabetischer Reihenfolge nach der Zeichenfolge angeordnet ist im Parameter wird eine positive Zahl zurückgegeben
Darüber hinaus verfügt die Methode localeCompare() über eine weitere einzigartige Funktion, die gefunden werden kann In seiner Methodensignatur kann das Gebietsschema (lokal, lokal) widergespiegelt werden, das heißt, seine Implementierung basiert auf regionalen Merkmalen. Wenn es sich um ein englisches System handelt, kann seine Implementierung in aufsteigender Reihenfolge der Zeichenfolgen erfolgen , seine Umsetzung kann im Einklang 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.
Bitte beachten Sie die folgenden Verfahren:
1 var testArray = ["Zheng", "zhou", "xin", "source", "xin", "information", "technology", "technology", "shares", "shares", "you ","limited","公","公司" ];
2 document.write(testArray.sort(
3 function CompareFunction(param1,param2){
4 return param1.localeCompare(param2) ; //Ausgabe: Aktie, Unternehmen, Aktie, Technologie, Technologie, Unternehmen, Informationen, Grenze, Brief, Buchstabe, Quelle, Zhengzhou
5 }
6 ));