¿Alguien puede verificar esto por mí? JavaScript no tiene una versión de strcmp (), por lo que debe escribir algo como:
( str1 < str2 ) ?
-1 :
( str1 > str2 ? 1 : 0 );
javascript
string
strcmp
Karel Bílek
fuente
fuente
Respuestas:
Qué pasa
fuente
localeCompare()
a veces se comporta de manera diferente en cada navegador.Javascript no lo tiene, como usted señala.
Se produjo una búsqueda rápida con:
de http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_strcmp/
Por supuesto, puede agregar localeCompare si es necesario:
Y úselo en
str1.localeCompare(str2)
todas partes, sin tener que preocuparse si el navegador local lo envió. El único problema es que tendrías que agregar soportelocales
yoptions
si te importa eso.fuente
==
se use y no===
porque este último evite tipo de conversión y, por lo tanto, es ese micro segundo más rápido.var a = this.toUpperCase(); var b = str.toUpperCase(); return ((a == b) ? 0 : ((a > b) ? 1 : -1));
localeCompare()
es lento , por lo que si no le importa el orden "correcto" de las cadenas de caracteres que no están en inglés, pruebe su método original o el aspecto más limpio:Este es un orden de magnitud más rápido que
localeCompare()
en mi máquina.Esto
+
asegura que la respuesta sea siempre numérica en lugar de booleana.fuente
(str1 > str2) - (str1 < str2)
Uso:
strcmp(string1, string2)
Resultado:
1
significa que string1 es más grande,0
significa igual,-1
significa string2 es más grande.Esto tiene un rendimiento más alto que
String.prototype.localeCompare
Además,
numeric:true
hace que haga una comparación lógica de númerosfuente
Qué tal si:
Luego, para comparar s1 con 2:
fuente