сравнение 2 строк в алфавитном порядке для целей сортировки
Я пытаюсь сравнить 2 строки в алфавитном порядке для целей сортировки. Например, я хочу иметь логическую проверку типа if('aaaa' < 'ab'). Я пробовал, но это не дает мне правильных результатов, поэтому я думаю, что это не правильный синтаксис. Как это сделать в jquery или Javascript?
4 ответов:
давайте посмотрим на некоторые тестовые случаи-попробуйте запустить следующие выражения в консоли JS:
"a" < "b" "aa" < "ab" "aaa" < "aab"все возвращают true.
JavaScript сравнивает строки символ за символом и "a "приходит перед" b " в алфавите - следовательно, меньше.
в вашем случае это работает примерно так -
1 . "aaaa"ab"
сравнивает первые два символа " a " - все равны, позволяет перейти к следующий символ.
2 . "аaaa " b"
сравнивает вторые символы " a "против" b " - ух! "а "предшествует"б". Вернуть true.
вы говорите, что сравнение для целей сортировки. Тогда я предлагаю вместо этого:
"a".localeCompare("b");возвращает
-1С"a" < "b",1или0в противном случае, как вам нужно для массив.прототип.сортировка ()имейте в виду, что сортировка зависит от локали. Е. Г. в Германии,
äвариантa, так что"ä".localeCompare("b", "de-DE")возвращает-1. По-Шведски,äЭто одна из последних букв в алфавите, так что"ä".localeCompare("b", "se-SE")возвращает1.без второго параметра
localeCompare, используется локаль браузера. Который, по моему опыту, никогда не является тем, что я хочу, потому что тогда он будет сортироваться иначе, чем сервер, который имеет фиксированную локаль для всех пользователей.
просто помните, что сравнение строк типа " x " > " X " чувствительно к регистру
"aa" < "ab" //true "aa" < "Ab" //falseможно использовать
.toLowerCase()для сравнения без учета регистра.
Comments