Ketika datang ke penyortiran meja, hal pertama yang perlu kita bicarakan adalah penyortiran array, karena penyortiran array adalah dasar dari penyortiran tabel.
JavaScript menyediakan metode sortir () untuk array untuk penyortiran tabel. Secara default, metode ini akan mengatur array dalam array dalam urutan kode ASCII. JavaScript juga menyediakan metode array reverse () untuk array.
Lihatlah contohnya:
Salinan kode adalah sebagai berikut:
function sortArray () {
var arraytest = ["z", 5,2, "a", 32,3];
arraytest.sort ();
alert (arraytest.tostring ()); // Output: 2,3,32,5, a, z
arraytest.reverse ();
alert (arraytest.tostring ()); // Output: Z, A, 5,32,3,2
}
sortarray ();
Haha, 5 lebih besar dari 32, jelas bahwa ini bukan hasil yang kita inginkan. Saya baru saja mengatakan bahwa metode sort () diurutkan dalam urutan kode ASCII.
Faktanya, metode sort () juga memungkinkan untuk mengambil parameter tipe fungsi, yang dapat kita sebut fungsi perbandingan. Ketika fungsi perbandingan dapat menerima dua parameter, fungsi berikut mengembalikan arti nilai:
Salinan kode adalah sebagai berikut:
-1: Parameter pertama lebih kecil dari parameter kedua
0: Parameter pertama sama dengan parameter kedua
1: Parameter pertama lebih besar dari parameter kedua
Salinan kode adalah sebagai berikut:
/**
* Fungsi perbandingan
* @param {objek} param1 param 1 untuk membandingkan
* @param {objek} param2 param 2 untuk membandingkan
* @return {number} if param1> param2 mengembalikan 1
* Jika param1 == param2 mengembalikan 0
* Jika param1 <param2 mengembalikan -1
*/
fungsi compareFunc (param1, param2) {
// Jika kedua parameter adalah tipe string
if (typeof param1 == "string" && typeof param2 == "string") {
return param1.localeCompare (param2);
}
// Jika parameter 1 adalah angka, parameter 2 adalah string
if (typeof param1 == "angka" && typeof param2 == "string") {
kembali -1;
}
// Jika parameter 1 adalah string, parameter 2 adalah angka
if (typeof param1 == "string" && typeof param2 == "angka") {
kembali 1;
}
// Jika kedua parameter adalah angka
if (typeof param1 == "angka" && typeof param2 == "angka") {
if (param1> param2) return 1;
if (param1 == param2) return 0;
if (param1 <param2) return -1;
}
}
Ketika kami menjalankan arraytest.sort (compareFunc) kami mendapatkan hasil yang benar.
Pada titik ini, kita harus menjelaskan penggunaan metode localecompare (), yang merupakan metode untuk mengurutkan string, dengan hanya satu parameter, yaitu string yang akan dibandingkan.
Penjelasan spesifik adalah sebagai berikut:
1. Jika objek string diatur secara abjad sebelum string dalam parameter, kembalikan angka negatif
2. Jika objek string diatur dalam urutan karakter setelah string dalam parameter, kembalikan angka positif
3. Jika objek string sama dengan string dalam parameter, kembalikan 0.
Selain itu, metode localecompare () memiliki fitur unik lainnya. Fitur unik ini dapat tercermin dalam metode tanda tangannya (di tempat, lokal), yaitu implementasinya didasarkan pada karakteristik regional. Jika dalam sistem bahasa Inggris, implementasinya mungkin berada dalam urutan string yang naik, dan jika dalam bahasa Cina, implementasinya didasarkan pada pinyin dari huruf pertama.
Haha, ini berarti bahwa bahkan jika kita melibatkan karakter Cina dalam program ini, penyortiran kita tidak akan salah.
Lihat program berikut:
Salinan kode adalah sebagai berikut:
var testarray = ["kaki", "buku", "ite", "home"];
document.write (testarray.sort (
Function CompareFunction (param1, param2) {
return param1.localeCompare (param2); // output: 一, rumah, buku, kaki
}
));