最近我一直在测试一些东西,并且坚持了一小段代码。这是一个草图:
let data = [{
date: "2018-10-09 18:00",
temp: "+13"
},
{
date: "2018-10-09 21:00",
temp: "+12"
},
{
date: "2018-10-10 00:00",
temp: "+5"
},
{
date: "2018-10-10 15:00",
temp: "+18"
},
{
date: "2018-10-11 00:00",
temp: "+4"
},
{
date: "2018-10-11 00:00",
temp: "+4"
}
];
let res = [];
function setData(data, day, time, id) {
let a = {
day: day,
time: time,
temp: data.temp
}
res[id].push(a);
}
function parse(data) {
let day, time, id = -1;
for (let i = 0; i < data.length; i++) {
day = data[i].date.split(" ")[0];
time = data[i].date.split(" ")[1];
if (id !== 0 && id !== -1) {
setData(data[i], day, time, id);
} else {
id++;
res[id] = new Array();
setData(data[i], day, time, id);
}
}
}
parse(data);
console.log(res);
我需要解析数据并对不同的日期进行排序,如下所示:
res = [[{day: 2018-10-09}, {day: 2018-10-09}], [{day: 2018-10-10}, {day: 2018-10-10}], [{day: 2018-10-11}, {day: 2018-10-11}]]
但是我的代码不正确,我做了很多次尝试,但都失败了。请帮助我
最佳答案
您需要修改您的方法,没有逻辑可以对其中的日期进行分组。请尝试使用以下代码:
let data = [
{
date: "2018-10-09 18:00",
temp: "+13"
},
{
date: "2018-10-10 00:00",
temp: "+5"
},
{
date: "2018-10-09 21:00",
temp: "+12"
},
{
date: "2018-10-10 15:00",
temp: "+18"
},
{
date: "2018-10-11 00:00",
temp: "+4"
},
{
date: "2018-10-11 00:00",
temp: "+4"
}
];
let res = {};
function setData(data, day, time){
let a = {
day: day,
time: time,
temp: data.temp
}
res[day].push(a);
}
function parse(data) {
let day, time, output = [];
for (let i = 0; i < data.length; i++) {
day = data[i].date.split(" ")[0];
time = data[i].date.split(" ")[1];
res[day] = res[day] || [];
setData(data[i], day, time);
}
let sortedDates = Object.keys(res).sort();
for (let date of sortedDates) {
output.push(res[date]);
}
return output;
}
res = parse(data);
console.log(res);
如果您还想对内部数组进行排序,那么您可以查看 sort with compare function
关于javascript - 简单的 "if"语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52913592/