Baru -baru ini, masalah penyortiran JS adalah bahwa penyortiran database adalah sumber daya yang terlalu memakan. Di klien, kecuali JS, sayangnya. Esensi Esensi Setelah tes saya, jenis metode JS Built -in sangat efisien
Kami tahu bahwa fungsi Sorts disediakan secara default di JS, tetapi fungsi ini diatur sesuai dengan kode ASCII dari konten array. Ada fungsi multi_sort dalam PHP untuk menyebutnya, tetapi tampaknya tidak ada fungsi seperti itu di JS, tetapi itu tidak masalah, karena fungsi JS juga menyediakan parameter yang dapat menentukan fungsi perbandingan untuk dua array dua dimensi.
1. Urutkan berdasarkan nilai numerik
Dengan asumsi array berikut
Salin kode kode sebagai berikut:
var arr = [[1, 2, 3], [7, 2, 3], [3, 2, 3]];
Apa yang kita lakukan jika kita ingin mengurutkan kolom pertama dari setiap sub -array?
Salin kode kode sebagai berikut:
Arr.sort (function (x, y) {
Return x [0] y [0];
});
Apa peran fungsi perbandingan di sini? Bahkan, array disalin ke x, y pada gilirannya, misalnya, pertama tetapkan arr [0] ke x, arr [1] ke y, dan kemudian gunakan x [0] y [0] untuk kembali sesuai dengan nilai pengembalian. Dan kemudian dua yang pertama diurutkan. Ini adalah fungsi perbandingan dari urutan default. diurutkan di kolom pertama. Penyortiran di sini akan memodifikasi struktur array ARR, sehingga Sorting ARR adalah array yang dipromosikan sesuai dengan kolom pertama.
2. Urutkan berdasarkan string
Jika Anda diurutkan berdasarkan string, kami dapat menggunakan metode localecompare yang disediakan oleh JS,
Localecompare: Bandingkan dua string dalam urutan tertentu.
Aturan penggunaan dari metode localecompare adalah StringObject.localeCompare (target). Jika StringObject lebih kecil dari target, localecompare () mengembalikan sejumlah kurang dari 0. Jika StringObject lebih besar dari target, metode ini mengembalikan angka lebih dari 0. Jika kedua string itu sama, atau tidak ada perbedaan sesuai dengan aturan penyortiran lokal, metode ini mengembalikan 0. Perangkat dibandingkan dengan aturan lokal. Sistem Operasi. Secara default misalnya, jumlah unicode yang murni dibandingkan dengan dua karakter tidak konsisten dengan banyak bahasa.
Misalnya
Salin kode kode sebagai berikut:
var arr = ['tengah', 'negara'], ['ah', ''], ['oh', '', '];
Arr.sort (function (x, y) {
Return x [0] .localeCompare (y [0]);
});
Akibatnya, itu akan diurutkan di pinyin dari kolom pertama karakter Cina string diurutkan, termasuk baris campuran Cina dan Sino -Bath. Adapun urutan pemesanan, metode ini sama dengan yang di atas, dan metode diubah untuk mengembalikan y [0] .localeCompare (x [0]);
Dengan cara ini, masalah penyortiran direalisasikan, dan masih ada banyak tempat untuk js dua -dimensi. Berharap dapat membantu beberapa orang
Salin kode kode sebagai berikut:
Fungsi tblsort {
untuk (r = 0; r <right_len; r ++) {
ARR [r] = []
untuk (c = 0; c <celan_len; c ++) {
Arrrs [r] [c] = {} // Buat objek lain dalam array dua -dimensi;
Arr [r] [c] .html = Table.rows [r] .cells [c] .innerhtml // Masukkan tabel html ke dalam array yang terkait dan ditampilkan pada halaman setelah penyortiran;
var text = Table.rows [r] .cells [c] .innerText // Dapatkan konten teks dari formulir untuk penilaian berikut;
// Deteksi yang mungkin tampak negatif jika data tidak normal, peringkat pada akhirnya;
if (text == '-') {{
arrs [r] [c] .text = '-1';
} else if (text == 'reintegle') {{
arr [r] [c] .text = '-2';
} else if (text == 'no baidu snapshot' || text == 'No Ranking Data') {
arr [r] [c] .text = '-3'
} else if (text == '') {
arr [r] [c] .text = '-4'
} Kalau tidak {
arrs [r] [c] .text = Table.rows [r] .cells [c] .innertext // Masukkan konten teks tabel ke dalam array yang terkait. Untuk mengurutkan di bawah ini untuk disortir.
}
}
}
// alert (arrs [0] [0] ['Text'])
// Reve Judgment saat ini disortir atau tidak sama;
if (reve) {
arrs.sort (function (x, y) {
Return parsefloat (y [s] ['text']) -parsefloat (x [s] ['text'])
});
Reve = 0
} Kalau tidak {
arrs.sort (function (x, y) {
Return parsefloat (x [s] ['text']) -parsefloat (y [s] ['text']) //
})
Reve = 1
}
// Masukkan konten HTML yang didayung di dalam formulir
untuk (r = 0; r <right_len; r ++) {
untuk (c = 0; c <celan_len; c ++) {
TABLE.ROWS [r] .cells [c] .InnerHtMl = arrs [r] [c] ['html']]
}
}
}
// tabel penyortiran berakhir