所以,我有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
索引。minTempAbsolute
和maxTempAbsolute
包含一个包含两个索引的数组 - 一个用于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])