我在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];
    }
}

10-08 13:09