Javascript 比较错误还是我遗漏了什么?

Javascript comparison bug or am I missing something?

所以,我有 JS 代码,用于从服务器获取有关 2 个传感器温度的数据。数据包含在一个文本文件中,其中每行包含一个温度计的日期和 2 个值。我设法将这些数据分别解析为日期和值的数组。我可以找到每个数组的最小值和最大值,但是当我尝试从两个温度数组中获取最小值和最大值时,我得到了错误的数据。温度值存储在 data.temperature 中,这是一个包含 2 个值的数组,每个值对应一个温度计(data 是一个包含 属性 temperature 的对象数组,作为两个值的数组)。我使用了一个调试器,在比较两个明显错误的值时,代码在多个点上抛出错误 (19>6=false)。

代码如下:

extremes.minTempAbsolute = [0, 0];
for(var i = 1; i < data.length; i++){
    for(var j = 0; j < data[i].temperature.length; j++){
        if(data[i].temperature[j] < data[extremes.minTempAbsolute[0]].temperature[extremes.minTempAbsolute[1]]){
            extremes.minTempAbsolute = [i, j];
        }
    }
}
extremes.maxTempAbsolute = [0, 0];
for(var i = 1; i < data.length; i++){
    for(var j = 0; j < data[i].temperature.length; j++){
        if(data[i].temperature[j] > data[extremes.maxTempAbsolute[0]].temperature[extremes.maxTempAbsolute[1]]){
            extremes.maxTempAbsolute = [i, j];
        }
    }
}

对象 extremes 包含 data 数组中那些极值的索引。 minTempAbsolutemaxTempAbsolute 包含两个索引的数组 - 一个用于 data,一个用于 temperature

在某一时刻,它正在比较 data[i].temperature[j] > data[extremes.maxTempAbsolute[0]].temperature[extremes.maxTempAbsolute[1]],其中 i 是 1540,j 是 0,maxTempAbsolute[0] 是 460,maxTempAbsolute[1] 是 1。因此:

data[1540].temperature[0] > data[460].temperature[1]
                       19 > 6
                        false

当我获取这些值并将它们记录到控制台时,它显示第一个值是 19,第二个值是 6,但它仍然无法正确比较它们(如上所示)。

我猜它也会以某种方式比较索引,因为:

data[1540].temperature[1] > data[460].temperature[1]
                      6.5 > 6
                        true

当索引改变时,它比较正常。

请帮帮我。我已经尝试了我所知道的一切并且迷失了想法。任何帮助将不胜感激。如果对我的问题有任何疑问,我会尽力及时解答。

由于您从文件中读取了 temperatures,因此您应该使用 Number 构造函数,因为您正在比较 strings.

Number(data[1540].temperature[0]) > Number(data[460].temperature[1])