因此,我每10分钟从传感器获取这种格式的大量数据:
2/18/2020 1:33:09 PM 20.3 C
2/18/2020 1:43:09 PM 20.2 C
2/18/2020 1:53:10 PM 20.3 C
2/18/2020 2:03:10 PM 20.2 C
2/18/2020 2:13:10 PM 20.4 C
我使用VS Code和RegEx将其缩减为以下格式:
18,20.3
18,20.2
18,20.3
18,20.2
18,20.4
某事告诉我,使用JS数组和for循环创建这种格式应该非常简单:
Day 18: High 20.4 Low 20.2
(And rest of the month)
很明显,我是JS初学者,但这是我最熟悉的语言,因为我将其用于一些小型项目的Web开发。任何输入都值得赞赏,甚至只是朝着正确的方向踢!
答案 0 :(得分:2)
您可以通过3个循环来执行此操作,一个循环用于解析数据,一个循环将每天的临时工作收集到一个数组中,一个循环来打印每天的高温/低温工作。
let str = `18,20.3
18,20.2
18,20.3
18,20.2
18,20.4`;
let lines = str.split("\n").map(line => line.split(",").map(parseFloat));
let days = [];
for (let [day, temp] of lines) {
if (!days[day]) {
days[day] = [];
}
days[day].push(temp);
}
for (let i = 0; i < days.length; i++) {
if (days[i]) {
console.log(`Day ${i}: High ${Math.max(...days[i])} Low ${Math.min(...days[i])}`);
}
}
答案 1 :(得分:0)
如果您已经使用RegExp将其转换为该格式,则可以将其重写,因此将其转换为JSON格式。使用Javascript正则表达式或编辑器来使用此RE:
search for /\d{1,2}\/(\d{1,2})\/\d{4} \d{1,2}:\d{1,2}:\d{1,2} (?:AM|PM) (-?\d+\.\d) C/
replace with {"day":\1, "temp":\2},
使用一些修复程序(例如删除最后一个逗号并在整个文件内容周围添加[]
),最终得到了这样的JSON。
[{"day":18, "temp":20.3},
{"day":18, "temp":20.2},
{"day":18, "temp":20.3},
{"day":18, "temp":20.2},
{"day":18, "temp":20.4}]
使用var arr = JSON.parse( filecontentString )
将为您提供一系列对象,您可以在这些对象上访问数据。
b ='[{"day":18, "temp":20.3},\
{"day":18, "temp":20.2},\
{"day":18, "temp":20.3},\
{"day":18, "temp":20.2},\
{"day":18, "temp":20.4}]';
arr = JSON.parse(b);
var min = max = arr[0].temp;
var result = "";
var i = 1;
for (; i < arr.length; i++) {
// still in the same day, compare values
if( arr[i-1].day == arr[i].day && i < arr.length) {
min = Math.min(arr[i].temp, min);
max = Math.max(arr[i].temp, max);
}
else {
// we reach this code at new day
// print day's min/max
result = result + "Day "+arr[i].day+": High "+max+" Low "+min+"\n";
// reset for the new date
min = max = arr[i].temp;
}
}
// for the last entry
result = result + "Day "+arr[arr.length-1].day+": High "+max+" Low "+min+"\n";