Rumah >hujung hadapan web >tutorial js >Menggunakan isihan digabungkan dengan localeCompare untuk melaksanakan contoh pengisihan bahasa Cina dalam kemahiran JS_javascript

Menggunakan isihan digabungkan dengan localeCompare untuk melaksanakan contoh pengisihan bahasa Cina dalam kemahiran JS_javascript

WBOY
WBOYasal
2016-05-16 16:41:151506semak imbas

Apabila bercakap tentang pengisihan jadual, perkara pertama yang perlu dibincangkan mestilah pengisihan tatasusunan, kerana pengisihan tatasusunan ialah asas pengisihan jadual.

JavaScript menyediakan kaedah sort() untuk tatasusunan untuk pengisihan jadual Secara lalai, kaedah ini akan menyusun tatasusunan dalam susunan kod ASCII juga menyediakan kaedah terbalik() untuk tatasusunan.

Lihat contoh:

Salin kod Kod adalah seperti berikut:

function sortArray(){
          var arrayTest = ["z",5,2,"a",32,3];
                arrayTest.sort();
                 makluman(arrayTest.toString());         //output:2,3,32,5,a,z
                arrayTest.reverse();
                  makluman(arrayTest.toString());        //output:z,a,5,32,3,2
         }
         sortArray();


Haha, 5 adalah lebih besar daripada 32. Jelas sekali ini bukan hasil yang kita inginkan Seperti yang dinyatakan sebentar tadi, kaedah sort() disusun mengikut susunan kod ASCII.

Malah, kaedah sort() juga membenarkan parameter jenis fungsi, yang boleh kita panggil sebagai fungsi perbandingan Apabila fungsi perbandingan boleh menerima dua parameter, berikut ialah maksud nilai pulangan fungsi:

Salin kod Kod adalah seperti berikut:

-1: Parameter pertama kurang daripada parameter kedua
0: Parameter pertama adalah sama dengan parameter kedua
1: Parameter pertama lebih besar daripada parameter kedua

Salin kod Kod adalah seperti berikut:

/**
* Fungsi perbandingan
* @param {Objek} param1 Parameter 1 untuk dibandingkan
* @param {Objek} param2 Parameter 2 untuk dibandingkan
* @return {Nombor} Jika param1 > *                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    keluar boleh *                                                                                                                                                                                              ...                            */
           fungsi compareFunc(param1,param2){
//Jika kedua-dua parameter ialah jenis rentetan
Jika(jenis param1 == "rentetan" && jenis param2 == "rentetan"){
                       kembalikan param1.localeCompare(param2);
            }
​​​​​​​ //Jika parameter 1 ialah nombor, parameter 2 ialah rentetan
Jika(jenis param1 == "nombor" && jenis param2 == "rentetan"){
                     pulangan -1;
            }
//Jika parameter 1 ialah rentetan dan parameter 2 ialah nombor
Jika(jenis param1 == "rentetan" && jenis param2 == "nombor"){
Pulangan 1;
            }
​​​​​ //Jika kedua-dua parameter ialah nombor
Jika(jenis param1 == "nombor" && jenis param2 == "nombor"){
Jika(param1 > param2) kembalikan 1;
Jika(param1 == param2) kembalikan 0;
Jika(param1 < param2) kembalikan -1;
            }
         }



Apabila kami melaksanakan arrayTest.sort(compareFunc) kami mendapat hasil yang betul.
Pada ketika ini, kita perlu menerangkan penggunaan kaedah localeCompare() Kaedah ini ialah kaedah pengisihan rentetan Ia hanya mempunyai satu parameter, iaitu rentetan untuk dibandingkan.

Arahan khusus adalah seperti berikut:

1 Jika objek String disusun mengikut abjad sebelum rentetan dalam parameter, nombor negatif dikembalikan

2. Jika objek String disusun selepas rentetan dalam parameter dalam susunan aksara, kembalikan nombor positif

3. Jika objek String adalah sama dengan rentetan dalam parameter, kembalikan 0


Selain itu, kaedah localeCompare() mempunyai satu lagi ciri unik, yang boleh dicerminkan dalam kaedah signature locale (tempatan, tempatan), yang bermaksud bahawa pelaksanaannya adalah berdasarkan ciri serantau , jika ia berada dalam sistem bahasa Inggeris , pelaksanaannya mungkin dalam susunan rentetan menaik, jika dalam bahasa Cina, pelaksanaannya mungkin mengikut pinyin huruf pertama.

Haha, ini bermakna walaupun kita melibatkan watak Cina dalam program, pengisihan kita tidak akan salah.

Rujuk prosedur berikut:



Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn