сравнение 2 строк в алфавитном порядке для целей сортировки



Я пытаюсь сравнить 2 строки в алфавитном порядке для целей сортировки. Например, я хочу иметь логическую проверку типа if('aaaa' < 'ab'). Я пробовал, но это не дает мне правильных результатов, поэтому я думаю, что это не правильный синтаксис. Как это сделать в jquery или Javascript?

301   4  

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() для сравнения без учета регистра.

"a".localeCompare("b") на самом деле должны вернуть -1 С a сортировка перед b

http://www.w3schools.com/jsref/jsref_localecompare.asp

Comments

    Ничего не найдено.