Próbuję porównać alfabetycznie 2 ciągi do celów sortowania. Na przykład chcę mieć czek logiczny, taki jak if('aaaa' < 'ab')
. Próbowałem, ale nie daje to poprawnych wyników, więc myślę, że to nie jest właściwa składnia. Jak to zrobić w jQuery lub Javascript?
javascript
jquery
w tym samym wieku
źródło
źródło
'aaaa' < 'ab'
zwracatrue
. <! - fałszywa edycja w celu usunięcia głosu ->Odpowiedzi:
Przyjrzyjmy się niektórym przypadkom testowym - spróbuj uruchomić następujące wyrażenia w konsoli JS:
Wszystkie zwracają prawdę.
JavaScript porównuje łańcuchy znak po znaku, a „a” występuje przed „b” w alfabecie - stąd mniej niż.
W twoim przypadku tak to działa -
porównuje pierwsze dwa znaki „a” - wszystkie równe, przejdźmy do następnego znaku.
porównuje drugie znaki „a” z „b” - whoop! „a” występuje przed „b”. Zwraca prawdę.
źródło
"a" < "b" === true
"a" < "B" === false
.Mówisz, że porównanie służy do sortowania. Zamiast tego proponuję:
Zwraca
-1
ponieważ"a" < "b"
,1
albo0
inaczej, jak trzeba do Array.prototype.sort ()Pamiętaj, że sortowanie zależy od lokalizacji. Np. W języku niemieckim
ä
jest wariantema
, więc"ä".localeCompare("b", "de-DE")
zwraca-1
. W języku szwedzkimä
to jedna z ostatnich liter alfabetu, więc"ä".localeCompare("b", "se-SE")
zwraca1
.Bez drugiego parametru do
localeCompare
używane są ustawienia regionalne przeglądarki. Z mojego doświadczenia wynika, że nigdy nie jest to, czego chcę, ponieważ wtedy będzie sortowany inaczej niż serwer, który ma stałe ustawienia regionalne dla wszystkich użytkowników.źródło
"aa".localeCompare("ab")
== "aa" .localeCompare ("Ab") dla każdej lokalizacji, o której przychodzi mi do głowy) i działa nawet w starszych wersjach IE. Powinna być zaakceptowana odpowiedź!Pamiętaj tylko, że w porównaniu ciągów znaków, takich jak „x”> „X”, rozróżniana jest wielkość liter
Możesz użyć
.toLowerCase()
do porównania bez rozróżniania wielkości liter.źródło
"a".localeCompare("b")
powinien faktycznie powrócić,-1
ponieważa
sortował wcześniejb
http://www.w3schools.com/jsref/jsref_localecompare.asp
źródło
Powiedzmy, że mamy tablicę obiektów:
następnie możemy posortować naszą tablicę w następujący sposób:
Uwaga: Uważaj na duże litery, może być konieczne rzutowanie ciągu na małe ze względu na cel.
źródło