为什么字符串“11”小于字符串“3”?

IT技术 javascript string comparison
2021-02-10 06:32:04
if ('11' < '3') alert('true');

很明显,它不是通过长度来比较它们,而是通过编码来比较它们。但是,我不明白它是如何工作的。我需要一些解释:-)

6个回答

字符串按字典顺序进行比较即逐个字符,直到它们不相等或没有任何字符可供比较。“11”的第一个字符小于“3”的第一个字符。

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

如果我们使用字母,那么因为b不小于aabc不小于aaa,但是因为c小于dabc小于abd

> 'abc' < 'aaa'
false
> 'abc' < 'abd'
true

您可以显式地将字符串转换为数字:

> +'11' < '3'
false
是的。字符串比较主要是按字母顺序进行的。
2021-03-17 06:32:04
只是一个简短的说明:注意小写和大写。大写在小写之前。前任:'abc' < 'Abd' //false
2021-03-20 06:32:04

默认情况下,JavaScript 会根据每个字符的序数值比较两个字符串;就像strcmp()在 C 中的工作方式一样

为了使您的比较有效,您可以将任一侧转换为一个数字,以告诉解释器您进行数字比较的意图:

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

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

在许多编程语言中,字符串按字典顺序进行比较您可以检查字母顺序

它按每个字符进行比较,以下将是false

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

由于4不小于3. 所以基本上你的比较归结为:

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

'1' < '3'并且因为第一个字符是“最重要的字符”(不是这个术语有任何意义)。将不再比较任何以下字符。

我猜 OP 可能不知道 ASCII。因此,我相信如果包含排序的字符列表可能会有所帮助。这是它:ASCII
2021-04-03 06:32:04