Estou tentando comparar 2 strings em ordem alfabética para fins de classificação. Por exemplo, eu quero ter uma verificação booleana como if('aaaa' < 'ab')
. Eu tentei, mas não está dando resultados corretos, então acho que essa não é a sintaxe certa. Como faço isso em jquery ou Javascript?
javascript
jquery
o mesmo de sempre
fonte
fonte
'aaaa' < 'ab'
retornatrue
. <! - edição falsa para remover voto ->Respostas:
Vejamos alguns casos de teste - tente executar as seguintes expressões em seu console JS:
Todos retornam verdadeiros.
JavaScript compara strings caractere por caractere e "a" vem antes de "b" no alfabeto - portanto, menos de.
No seu caso, funciona assim -
compara os dois primeiros caracteres "a" - todos iguais, vamos passar para o próximo caractere.
compara os segundos caracteres "a" com "b" - uau! "a" vem antes de "b". Retorna verdadeiro.
fonte
"a" < "b" === true
"a" < "B" === false
.Você diz que a comparação é para fins de classificação. Então eu sugiro em vez disso:
Ele retorna
-1
desde"a" < "b"
,1
ou de0
outra forma, como você precisa para Array.prototype.sort ()Lembre-se de que a classificação depende do local. Por exemplo, em alemão,
ä
é uma variante dea
, então"ä".localeCompare("b", "de-DE")
retorna-1
. Em sueco,ä
é uma das últimas letras do alfabeto, então"ä".localeCompare("b", "se-SE")
retorna1
.Sem o segundo parâmetro para
localeCompare
, a localidade do navegador é usada. O que, na minha experiência, nunca é o que eu quero, porque então vai classificar de forma diferente do servidor, que tem um local fixo para todos os usuários.fonte
"aa".localeCompare("ab")
== "aa" .localeCompare ("Ab") para qualquer local que eu possa pensar) e funciona até mesmo em versões antigas do IE. Deve ser a resposta aceita!Lembre-se de que a comparação de strings como "x"> "X" diferencia maiúsculas de minúsculas
Você pode usar
.toLowerCase()
para comparar sem distinção entre maiúsculas e minúsculas.fonte
"a".localeCompare("b")
deve realmente retornar,-1
poisa
classifica antesb
http://www.w3schools.com/jsref/jsref_localecompare.asp
fonte
Digamos que temos uma matriz de objetos:
então podemos classificar nosso array da seguinte maneira:
Nota: Tenha cuidado com as letras maiúsculas, você pode precisar lançar sua string para minúsculas devido ao seu propósito.
fonte