Вопрос по javascript, string – Почему строка «11» меньше строки «3»? [Дубликат]

23

This question already has an answer here:

Why is one string greater than the other when comparing strings in JavaScript? 3 answers
if ('11' < '3') alert('true');

Очевидно, что сравнивают их не по длине, а вместо кодирования. Однако я не понимаю, как это работает. Мне нужно какое-то объяснение :-)

Ваш Ответ

6   ответов
2

'1' < '3' и поскольку первый символ является «наиболее значимым символом»; (не то, чтобы этот термин имел какой-либо смысл). Любые последующие символы больше не будут сравниваться.

Я думаю, что OP может не знать ASCII. Поэтому я считаю, что это может быть полезно, если включен отсортированный список символов. Вот:ASCII.
4

Во многих языках программирования строки сравниваются каклексически, Ты можешь проверитьАлфавитный порядок

4

По умолчанию JavaScript сравнивает две строки по порядковому значению каждого символа; очень похоже на то, какstrcmp() работает в кл.

Чтобы ваше сравнение работало, вы можете привести любую сторону к числу, чтобы сообщить интерпретатору о ваших намерениях численного сравнения:

Number('11') < '3' // false
+'11' < '3' // false, using + to coerce '11' to a numeric

'11' < Number('3') // false
'11' < +'3' // false
42

Строки сравниваются символ за символом до тех пор, пока они не станут равными или не останется символов для сравнения. Первый символ '11'; меньше, чем первый символ '3'.

> '11' < '3'
true
> '31' < '3'
false
> '31' < '32'
true
> '31' < '30'
false

Если мы используем буквы тогда, так какb не менее чемa, abc не менее чемaaa, но с тех порc меньше чемd, abc меньше чемabd.

> 'abc' < 'aaa'
false
> 'abc' < 'abd'
true
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded'abc' < 'Abd' //false
0

Это было обработано как сравнение строк. Итак, 1 & lt; 3 (первые символы двух строк), затем строка 11 предшествует строке 3

3

Он сравнивается по каждому символу, следующее будетfalse:

if ('41' < '3') alert('true');

поскольку4 не менее чем3, По сути, ваше сравнение сводилось к следующему:

if ('1' < '3') alert('true'); // true

Похожие вопросы