Adakah yang bisa memverifikasi ini untuk saya? JavaScript tidak memiliki versi strcmp (), jadi Anda harus menulis sesuatu seperti:
( str1 < str2 ) ?
-1 :
( str1 > str2 ? 1 : 0 );
javascript
string
strcmp
Karel Bílek
sumber
sumber
Jawaban:
Bagaimana dengan
sumber
localeCompare()
terkadang berperilaku berbeda di setiap browser.Javascript tidak memilikinya, seperti yang Anda tunjukkan.
Pencarian cepat muncul dengan:
dari http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_strcmp/
Tentu saja, Anda bisa menambahkan localeCompare jika diperlukan:
Dan gunakan di
str1.localeCompare(str2)
mana-mana, tanpa harus khawatir apakah browser lokal telah dikirimkan dengannya. Satu-satunya masalah adalah Anda harus menambahkan dukungan untuklocales
danoptions
jika Anda peduli tentang itu.sumber
==
digunakan dan tidak===
sejak yang terakhir menghindari ketik konversi dan karenanya mikro itu lebih cepat.var a = this.toUpperCase(); var b = str.toUpperCase(); return ((a == b) ? 0 : ((a > b) ? 1 : -1));
localeCompare()
lambat , jadi jika Anda tidak peduli dengan urutan "benar" string non-Bahasa Inggris, coba metode asli Anda atau yang tampak bersih:Ini adalah urutan besarnya lebih cepat dari
localeCompare()
pada mesin saya.The
+
memastikan bahwa jawabannya selalu numerik daripada boolean.sumber
(str1 > str2) - (str1 < str2)
Pemakaian:
strcmp(string1, string2)
Hasil:
1
berarti string1 lebih besar,0
berarti sama,-1
berarti string2 lebih besar.Ini memiliki kinerja lebih tinggi daripada
String.prototype.localeCompare
Juga,
numeric:true
membuatnya melakukan perbandingan angka yang logissumber
Bagaimana tentang:
Kemudian, untuk membandingkan s1 dengan 2:
sumber