Quelqu'un peut-il vérifier cela pour moi? JavaScript n'a pas de version de strcmp (), vous devez donc écrire quelque chose comme:
( str1 < str2 ) ?
-1 :
( str1 > str2 ? 1 : 0 );
javascript
string
strcmp
Karel Bílek
la source
la source
Réponses:
Qu'en est-il de
la source
localeCompare()
se comporte parfois différemment sur chaque navigateur.Javascript ne l'a pas, comme vous le faites remarquer.
Une recherche rapide est venue avec:
depuis http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_strcmp/
Bien sûr, vous pouvez simplement ajouter localeCompare si nécessaire:
Et utilisez-le
str1.localeCompare(str2)
partout, sans vous soucier de savoir si le navigateur local est livré avec. Le seul problème est que vous devrez ajouter un support pourlocales
etoptions
si cela vous intéresse.la source
==
est utilisé et non===
puisque ce dernier évite conversion de type et est donc cette micro seconde plus rapide.var a = this.toUpperCase(); var b = str.toUpperCase(); return ((a == b) ? 0 : ((a > b) ? 1 : -1));
localeCompare()
est lent , donc si vous ne vous souciez pas du "bon" ordre des chaînes de caractères non anglais, essayez votre méthode originale ou la plus propre:C'est un ordre de grandeur plus rapide que
localeCompare()
sur ma machine.Le
+
garantit que la réponse est toujours numérique plutôt que booléenne.la source
(str1 > str2) - (str1 < str2)
Usage:
strcmp(string1, string2)
Résultat:
1
signifie que string1 est plus grand,0
signifie égal,-1
signifie que string2 est plus grand.Cela a des performances plus élevées que
String.prototype.localeCompare
En outre,
numeric:true
il fait une comparaison logique des nombresla source
Que diriez-vous:
Ensuite, pour comparer s1 avec 2:
la source