J'essaie de comparer 2 chaînes par ordre alphabétique à des fins de tri. Par exemple, je veux avoir une vérification booléenne comme if('aaaa' < 'ab')
. Je l'ai essayé, mais cela ne me donne pas de bons résultats, donc je suppose que ce n'est pas la bonne syntaxe. Comment faire cela dans jquery ou Javascript?
javascript
jquery
même ancien
la source
la source
'aaaa' < 'ab'
revienttrue
. <! - fausse modification pour supprimer le vote ->Réponses:
Regardons quelques cas de test - essayez d'exécuter les expressions suivantes dans votre console JS:
Tous retournent vrai.
JavaScript compare les chaînes caractère par caractère et "a" vient avant "b" dans l'alphabet - donc moins de.
Dans votre cas, cela fonctionne comme ça -
compare les deux premiers caractères "a" - tous égaux, passons au caractère suivant.
compare les seconds caractères "a" et "b" - whoop! "a" vient avant "b". Renvoie vrai.
la source
"a" < "b" === true
"a" < "B" === false
.Vous dites que la comparaison sert à des fins de tri. Ensuite, je suggère à la place:
Il retourne
-1
depuis"a" < "b"
,1
ou0
autrement, comme vous en avez besoin pour Array.prototype.sort ()Gardez à l'esprit que le tri dépend des paramètres régionaux. Par exemple, en allemand,
ä
est une variante dea
, donc"ä".localeCompare("b", "de-DE")
renvoie-1
. En suédois,ä
est l'une des dernières lettres de l'alphabet, donc"ä".localeCompare("b", "se-SE")
renvoie1
.Sans le deuxième paramètre à
localeCompare
, les paramètres régionaux du navigateur sont utilisés. Ce qui, d'après mon expérience, n'est jamais ce que je veux, car alors le tri sera différent de celui du serveur, qui a un paramètre régional fixe pour tous les utilisateurs.la source
"aa".localeCompare("ab")
== "aa" .localeCompare ("Ab") pour tous les paramètres régionaux auxquels je pense) et fonctionne même dans les anciennes versions d'IE. Devrait être la réponse acceptée!N'oubliez pas que la comparaison de chaînes comme "x"> "X" est sensible à la casse
Vous pouvez utiliser
.toLowerCase()
pour comparer sans respecter la casse.la source
"a".localeCompare("b")
devrait en fait revenir-1
depuis lesa
tris avantb
http://www.w3schools.com/jsref/jsref_localecompare.asp
la source
Disons que nous avons un tableau d'objets:
alors nous pouvons trier notre tableau comme suit:
Remarque: faites attention aux lettres majuscules, vous devrez peut-être convertir votre chaîne en minuscules en raison de votre objectif.
la source