Isih Rentetan dalam JavaScript
Banyak pembangun JavaScript menghadapi cabaran apabila cuba mengisih senarai objek berdasarkan atribut rentetan disebabkan oleh keunikan tingkah laku rentetan dalam JavaScript. Artikel ini meneroka penyelesaian kepada isu biasa ini.
Masalah:
Seperti yang anda temui, hanya tolak satu rentetan daripada rentetan yang lain, seperti dalam a.attr - b.attr , tidak mengisih rentetan dalam JavaScript dengan tepat. Ini kerana JavaScript menganggap rentetan sebagai aksara Unikod dan operasi aritmetik asas tidak sesuai untuk membandingkannya.
Penyelesaian:
Untuk mengisih rentetan dengan berkesan, anda boleh menggunakan String.prototype.localeCompare kaedah. Kaedah ini menyediakan perbandingan rentetan yang sensitif setempat, menjadikannya lebih sesuai untuk pengisihan. Berikut ialah versi kod anda yang dikemas kini menggunakan localeCompare:
list.sort(function(a, b) { return ('' + a.attr).localeCompare(b.attr); });
Perhatikan bahawa kami telah menambah gabungan rentetan kosong ('' a.attr) untuk memastikan kedua-dua nilai dipaksa menjadi rentetan. Ini adalah untuk mengelakkan kemungkinan pengecualian.
Alternatif:
Jika anda lebih suka pendekatan yang lebih ringkas dan tidak perlu mempertimbangkan kepekaan setempat, anda boleh menggunakan yang berikut coretan kod:
if (item1.attr < item2.attr) return -1; if ( item1.attr > item2.attr) return 1; return 0;
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Rentetan dengan Betul dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!