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



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

当指数发生变化时,比较得很好。

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

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

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

相关内容

最新更新