Pengisihan Mengikut Setempat
Isih rentetan dengan betul menggunakan Intl.Collator.
Pengisihan Mengikut Setempat ialah pelajaran Akademi JavaScript percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Akademi JavaScript, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Akademi JavaScript merangkumi sejumlah 4 pelajaran.
Mengapa Pengisihan Lalai Gagal
Kaedah sort() pada tatasusunan membandingkan rentetan berdasarkan unit kod UTF-16. Ini meletakkan huruf besar sebelum huruf kecil dan mengendalikan aksen dengan tidak betul — tidak sesuai untuk senarai yang mudah dibaca manusia.
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort()); // ["Apple","banana","cherry"] — capital winslocaleCompare
String.prototype.localeCompare membandingkan dua rentetan menggunakan aturan lokal, lalu mengembalikan nilai negatif, sifar atau positif.
console.log("apple".localeCompare("banana")); // -1
console.log("banana".localeCompare("apple")); // 1Mengisih dengan localeCompare
Berikannya sebagai pembanding untuk mendapatkan susunan yang mesra manusia.
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort((a, b) => a.localeCompare(b)));
// ["Apple", "banana", "cherry"] — case-insensitive orderingIntl.Collator
Untuk mengisih banyak item, Intl.Collator lebih pantas: bina sekali dan gunakan semula kaedah comparenya.
const collator = new Intl.Collator("en-US");
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort(collator.compare));Aksen dan Tanda Diakritik
Collator menyusun aksara beraksen dengan betul mengikut lokal, tidak seperti perbandingan unit kod.
const words = ["zebra", "ela", "elf", "elan"];
const collator = new Intl.Collator("fr");
console.log([...words].sort(collator.compare));Kepekaan
sensitivity mengawal perbezaan yang diambil kira: "base" mengabaikan huruf besar dan aksen, "accent" hanya mengabaikan huruf besar, manakala "variant" membezakan semuanya.
const c = new Intl.Collator("en", { sensitivity: "base" });
console.log(c.compare("apple", "APPLE")); // 0 (treated equal)Pengisihan Berangka
numeric: true mengisih nombor yang tertanam berdasarkan nilainya, jadi "fail2" muncul sebelum "fail10".
const files = ["file10", "file2", "file1"];
const c = new Intl.Collator("en", { numeric: true });
console.log([...files].sort(c.compare)); // ["file1","file2","file10"]Susunan Huruf Besar Dahulu
caseFirst: "upper" atau "lower" menentukan sama ada huruf besar diisih sebelum huruf kecil apabila perbezaan lain adalah sama.
const c = new Intl.Collator("en", { caseFirst: "upper" });
console.log(["b", "B", "a", "A"].sort(c.compare));Lokal Penting untuk Susunan
Bahasa yang berbeza menyusun perkataan mengikut abjad dengan cara yang berbeza. Dalam bahasa Sweden, sesetengah huruf beraksen diisih selepas z, bukan berdekatan a.
const words = ["z", "a", "o"];
console.log([...words].sort(new Intl.Collator("sv").compare));Carian dengan Kegunaan
usage: "search" melaraskan Collator untuk pemadanan dan bukannya penyusunan — berguna untuk menapis tanpa mengambil kira aksen.
const c = new Intl.Collator("en", { usage: "search", sensitivity: "base" });
function matches(a, b) { return c.compare(a, b) === 0; }
console.log(matches("cafe", "CAFE")); // trueMengisih Objek
Gunakan Collator pada kunci apabila mengisih tatasusunan objek.
const people = [{ name: "Bob" }, { name: "alice" }, { name: "Carol" }];
const c = new Intl.Collator("en");
console.log(people.sort((a, b) => c.compare(a.name, b.name)).map((p) => p.name));Semakan Pantas
Uji pengisihan peka lokal.
Imbas Kembali: Pengisihan Peka Lokal
Anda telah melihat sebab sort() lalai tidak sesuai, menggunakan localeCompare dan Intl.Collator yang lebih pantas, mengendalikan aksen, kepekaan, susunan berangka dan huruf besar, abjad khusus lokal, serta pemadanan carian. Ini melengkapkan kursus Intl.
Pelajari JavaScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 59
- Pelajaran
- 200
Soalan Lazim
Adakah pelajaran “Pengisihan Mengikut Setempat” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Akademi JavaScript, termasuk “Pengisihan Mengikut Setempat”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Akademi JavaScript merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pengisihan Mengikut Setempat”?
Isih rentetan dengan betul menggunakan Intl.Collator. Anda berlatih Akademi JavaScript menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Akademi JavaScript?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Akademi JavaScript di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Pengisihan Mengikut Setempat” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Akademi JavaScript ini?
Ya. Setiap pelajaran Akademi JavaScript menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Memformat Nombor dan Mata Wang
- Memformat Tarikh dan Waktu
- Waktu Relatif dan Bentuk Jamak
- Pengisihan Mengikut Setempat