Contoh dalam artikel ini menerangkan kaedah Juery untuk menyelesaikan pengisihan dan julat aksara Cina penyusun jadual. Kongsikan dengan semua orang untuk rujukan anda. Analisis khusus adalah seperti berikut:
penyusun jadual ialah pemalam pengisihan jadual yang sangat baik di kalangan pemalam jQuery. Saya percaya semua orang telah menggunakannya atau mendengarnya, jadi saya tidak akan memperkenalkannya terlalu banyak di sini. Untuk maklumat lanjut, anda boleh menyemaknya laman web: http://tablesorter .com/docs/ (demo agak lengkap).
Dalam beberapa projek yang dibangunkan menggunakan penyusun jadual, dua jenis masalah pengisihan ditemui, seperti berikut:
Masalah pertama ialah aksara Cina tidak boleh diisih Ini kerana apabila mengisih aksara, saiz aksara dibandingkan menggunakan nilai unikod adalah seperti berikut:
Kod Js
function sortText(a,b) { return ((a < b) ? -1 : ((a > b) ? 1 : 0)); }; function sortTextDesc(a,b) { return ((b < a) ? -1 : ((b > a) ? 1 : 0)); }; function sortText(a,b) { return ((a < b) ? -1 : ((a > b) ? 1 : 0)); }; function sortTextDesc(a,b) { return ((b < a) ? -1 : ((b > a) ? 1 : 0)); };
Hasil yang kami mahu ialah mengisih mengikut pinyin Cina, jadi kami boleh mengubah suai kod kepada kod berikut:
Kod Js
function sortText(a,b) { return a.localeCompare(b); }; function sortTextDesc(a,b) { return b.localeCompare(a); }; function sortText(a,b) { return a.localeCompare(b); }; function sortTextDesc(a,b) { return b.localeCompare(a); };
Kaedah localeCompare ialah kaedah yang disertakan dengan JS, seperti namanya, kaedah ini membandingkan saiz aksara berdasarkan kawasan semasa, bagaimanapun, kaedah ini tidak boleh mengendalikan aksara polifonik.
Masalah kedua ialah data berangka yang melebihi julat tidak boleh diisih Ini kerana nilai data diherotkan semasa penukaran jenis angka, contohnya:
Kod Js
alert(parseFloat('9999999999999999')); // 10000000000000000 alert(parseFloat('10000000000000001')); // 10000000000000000 alert(parseFloat('10000000000000004')); // 10000000000000004 alert(parseFloat('10000000000000005')); // 10000000000000004 alert(parseFloat('10000000000000006')); // 10000000000000006 alert(parseFloat('9999999999999999')); // 10000000000000000 alert(parseFloat('10000000000000001')); // 10000000000000000 alert(parseFloat('10000000000000004')); // 10000000000000004 alert(parseFloat('10000000000000005')); // 10000000000000004 alert(parseFloat('10000000000000006')); // 10000000000000006
Penyimpangan sedemikian akan menjadikan keputusan pengisihan tidak tepat Untuk mengelakkan masalah ini, nilai asal tidak boleh digunakan untuk perbandingan, sebaliknya, pemberat harus diperkenalkan dari kiri ke kanan, yang sepadan dengan setiap angka nilai menurun. Kemudian nilai baru dikira berdasarkan berat dan nilai asal digunakan untuk perbandingan.
Kod Js
this.formatFloat = function(s) { // TODO var i = parseFloat(s); return (isNaN(i)) ? 0 : i; };
Saya harap artikel ini akan membantu pengaturcaraan jQuery semua orang.