在Javascript中比较整数时误报



我遇到了一个非常奇怪的问题,比较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]也是如此。我还记录了整个事情,以检查数字是预期的,它们是(示例中使用的数字是我正在使用的一些数字)…

知道会发生什么吗?我真的很困惑,因为这对我来说没有意义…

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

您总是在循环中执行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];
    }
}

嗯,甚至不知道为什么,但是在改变了与这些数字来自的服务器的CORS相关的东西之后(但根本没有修改数字),比较似乎如预期的那样工作…对可能发生的变化毫无头绪!

最新更新