字符串形式的数字比较

时间:2015-07-25 00:28:46

标签: javascript extjs

为什么在JavaScript“101”> “81”为假,“101”> “100”是真的。当我在我的extjs网格(我的列模型是字符串)上进行排序时遇到了这个问题。

3 个答案:

答案 0 :(得分:2)

那是因为" 101"是字符串,如果你进行转换可以得到正确的结果:

if(Number("101") > Number("81"))
{
...
}

希望帮助你

答案 1 :(得分:1)

您需要在比较之前将字符串转换为整数以获得正确的结果。

使用parseInt()函数将字符串转换为整数。

if(parseInt("101") > parseInt("81"))
{

}

    OR

您可以使用number()函数 - 将object参数转换为表示对象值的数字。

if(Number("101") > Number("81"))
    {

    }

parseInt()& Number() - 两者都用于将字符串转换为整数但差异 -

parseInt()解析到第一个非数字并返回它拥有的任何数字 解析。 Number() - 想要将整个字符串转换为数字。

实施例。

parseInt("123hui") - 123
Number("123hui") - NaN

答案 2 :(得分:0)

您的所有值均为string,这就是您进行字符串比较的原因。比较字符串时,您逐个字母,第一个区别决定结果。

在你的情况下" 101"和" 81",你采取" 1"和" 8"在第一步。它导致" 1" < " 8"这将成为最终结果:" 101" < " 81"

在另一种情况下" 101"和" 100",你采取" 1"和" 1"在第一步和" 0"和" 0"在第二个,两者是平等的。比较" 1"和" 0"因为" 1" > " 0",这就是为什么" 101" > " 100"

如果列的逻辑是数字,则应该将模型适当地指定为数字。