在比较Javascript中的整数时出现误报

时间:2014-06-13 10:04:16

标签: javascript integer comparison compare operators

我在Javascript中比较整数时面临一个非常奇怪的问题。我有一组数字,我想检查循环中的当前数字是否小于前一个数字。为此,我将“当前”数字保存为“之前”,以便我可以在下一个循环中检查它们。该函数按预期运行,除非每次当前和前一个数字具有不同的位数:在这种情况下,代码看不到实际上较小的数字小于前一个数字。

例如:

111 < 120 ? ---> YES!

106 < 111 ? ---> YES!

98 < 106  ? ---> NO!

76 < 98   ? ---> YES!

5 < 76    ? ---> NO!

我无法在我正在使用的代码中发现任何奇怪的内容,因为它非常简单:

for(var j=0;j<arrScores.length;j++)
{
    if(arrScores[j][0] < scoreAnt)
    {
        console.log("Smaller!");
    }

    scoreAnt = arrScores[j][0];
}

我尝试在两个值中使用parseInt(),但没有任何变化......使用scoreAnt.toString().length检查两个数字的长度会返回长度1,无论它是多少(100, 34或156798),arrScores[j][0]也是如此。我还记录了整个事情来检查数字是否是预期数字,它们是(示例中使用的数字是我正在使用的数字)...

有关可能发生的事情的任何线索?我真的迷失了,因为这对我没有意义......

提前感谢您的时间和精力! :)

2 个答案:

答案 0 :(得分:1)

你总是在循环中做scoreAnt = arrScores[j][0];;但是你应该只在arrScores [j]较小的情况下这样做;即在内花括号内。

for(var j=0;j<arrScores.length;j++)
{
    if(arrScores[j][0] < scoreAnt)
    {
        console.log("Smaller!");
        scoreAnt = arrScores[j][0];
    }
}

答案 1 :(得分:0)

嗯,甚至不知道为什么,但是在更改了与这些数字来自的服务器的CORS相关的内容之后(但根本没有修改数字),比较似乎按预期工作...没有头绪关于可能发生了什么变化! :S然而,现在它正常工作......