Próbuję porównać 2 ciągi alfabetycznie dla celów sortowania. Na przykład chcę mieć sprawdzanie boolowskie, takie 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?porównanie 2 ciągów alfabetycznie do celów sortowania
Odpowiedz
Spójrzmy na niektórych przypadków testowych - spróbuj uruchomić następujące wyrażenia w konsoli JS:
"a" < "b"
"aa" < "ab"
"aaa" < "aab"
Wszystko return true.
JavaScript porównuje ciągi znaków według znaków i "a" pojawia się przed "b" w alfabecie - stąd mniej niż.
W twoim przypadku to działa jak tak -
1. " aaa" < " b"
porównuje dwa pierwsze znaki "a" - wszyscy równi, pozwala przejść do następnego znaku.
2. "A aa" < "a b"
porównuje drugi znaki "a" przeciw "B" - whoop! "a" występuje przed "b". Zwraca true.
Wystarczy pamiętać, że porównanie ciąg jak „x”> „X” jest rozróżniana
"aa" < "ab" //true
"aa" < "Ab" //false
Ty mów, że porównanie jest dla celów sortowania. To proponuję zamiast:
"a".localeCompare("b");
Zwraca -1
ponieważ "a" < "b"
, 1
lub 0
inaczej, jak trzeba do Array.prototype.sort()
Pamiętaj, że sortowanie jest zależne od ustawień regionalnych. Na przykład. w języku niemieckim: ä
jest odmianą a
, więc "ä".localeCompare("b", "de-DE")
zwraca -1
. W języku szwedzkim ä
jest jedną z ostatnich liter w alfabecie, więc "ä".localeCompare("b", "se-SE")
zwraca 1
.
Bez drugiego parametru do localeCompare
używane jest ustawienie narodowe przeglądarki. Które z mojego doświadczenia nigdy nie jest tym, czego chcę, ponieważ wtedy będzie sortować inaczej niż serwer, który ma ustalone locale dla wszystkich użytkowników.
+1 także wspomnieć, że jest to również dobre dla przypadków ('" aa ".localeCompare (" ab ")' == "aa" .localeCompare ("Ab") dla dowolnego ustawienia narodowego, które mogę wymyślić) i działa nawet w stare wersje IE. Powinna być zaakceptowaną odpowiedzią! – user568458
+1 dla Piotra; Jest to bardziej zgodne z tym, jak działa sortowanie tablic JavaScript, więc jest bardziej użyteczne, i myślę, że jest to więcej tego, o co prosił OP. – Grandclosing
"a".localeCompare("b")
powinny rzeczywiście powrócić -1
od a
rodzaju przed b
Jeśli miałeś na myśli to jako komentarz do mojej odpowiedzi, masz rację. Moja odpowiedź nieprawidłowo pokazywała wynik jako 1, więc to poprawiłem. –
- 1. Jak sortować alfabetycznie JQuery UI do sortowania?
- 2. Porównanie inteligentnych ciągów znaków
- 3. PHP sortowania tablicy alfabetycznie używając wartości subarray
- 4. Porównanie ciągów w Go
- 5. Niestandardowe porównanie ciągów w języku C#
- 6. Jak porównać 2 ciągi alfabetycznie
- 7. freemarker - porównanie ciągów - operator niedozwolony
- 8. Jak mogę posortować tablicę ciągów alfabetycznie, gdy łańcuch zawiera åäö?
- 9. Efektywny algorytm sortowania ciągów znaków
- 10. C# sortowania tabeli przez 2 kolumny
- 11. jQuery do sortowania otrzymuje 2 wymieniane elementy
- 12. Funkcje sortowania Visual Studio 2010 w edytorze alfabetycznie
- 13. Porównanie dwóch angielskich ciągów znaków dla podobieństw
- 14. Porównanie ciągów i kolejność alfabetyczna pojedynczych znaków
- 15. Gson, JsonElement, Porównanie ciągów w Javie
- 16. Porównanie ciągów w bashu nie działa
- 17. Elementy listy sortowania w Elixir Lang
- 18. Porównanie wielu ciągów znaków arbitralnych ze znakami zorientowanymi
- 19. Jak przekazać niestandardowy komparator do "sortowania"?
- 20. Sortowanie nazw na liście alfabetycznie?
- 21. Prosty sposób na porównanie 2 ArrayLists
- 22. Tworzenie backtype.storm.tuple.Tuple do celów testowych?
- 23. Najlepszy sposób na porównanie 2 adresów URL
- 24. Html.EnumDropdownListFor mogę zamówić alfabetycznie?
- 25. Porównanie liczb całkowitych i ciągów na poziomie systemu
- 26. Porównanie z dosłownymi wynikami ciągów w nieokreślonym zachowaniu?
- 27. Porównanie dwóch identycznych ciągów zwraca wartość false w PHP
- 28. Jak wydrukować porównanie dwóch ciągów wielowierszowych w ujednoliconym formacie diff?
- 29. Wyliczenie wyszukujące dla celów interfejsu użytkownika
- 30. wyniki alfabetycznie od Dir.glob
Widziałeś http://stackoverflow.com/questions/1134976/how-may-i-sort-a-list-alphabetically -używania-jquery? – j08691
Tak to robisz. Jakiego wyniku oczekujesz? Wyrażenie "aaaa" <'ab'' zwraca 'true'. – Guffa