Alguém pode verificar isso para mim? O JavaScript não possui uma versão do strcmp (), então você deve escrever algo como:
( str1 < str2 ) ?
-1 :
( str1 > str2 ? 1 : 0 );
javascript
string
strcmp
Karel Bílek
fonte
fonte
Respostas:
A respeito
fonte
localeCompare()
às vezes se comporta de maneira diferente em cada navegador.Javascript não tem, como você aponta.
Uma pesquisa rápida surgiu com:
de http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_strcmp/
Obviamente, você pode adicionar o localeCompare, se necessário:
E use em
str1.localeCompare(str2)
qualquer lugar, sem ter que se preocupar com o envio do navegador local. O único problema é que você teria que adicionar suportelocales
eoptions
se você se importa com isso.fonte
==
é usado e não,===
pois o último evita conversão de tipo e, portanto, é esse micro segundo mais rápido.var a = this.toUpperCase(); var b = str.toUpperCase(); return ((a == b) ? 0 : ((a > b) ? 1 : -1));
localeCompare()
é lento ; portanto, se você não se importa com a ordem "correta" de cadeias de caracteres que não sejam do inglês, tente seu método original ou a aparência mais limpa:Esta é uma ordem de magnitude mais rápida do que
localeCompare()
na minha máquina.Os
+
garante que a resposta é sempre numérico ao invés de boolean.fonte
(str1 > str2) - (str1 < str2)
Uso:
strcmp(string1, string2)
Resultado:
1
significa string1 é maior,0
significa igual,-1
significa string2 é maior.Isso tem desempenho superior ao
String.prototype.localeCompare
Além disso,
numeric:true
faz a comparação lógica de númerosfonte
E se:
Então, para comparar s1 com 2:
fonte