我在Facebook图形资源管理器中有以下几小时的json对象:
"hours": {
"mon_1_open": "10:00",
"mon_1_close": "16:00",
"mon_2_open": "11:00",
"mon_2_close": "12:00",
"tue_1_open": "06:00",
"tue_1_close": "15:00",
"wed_1_open": "06:00",
"wed_1_close": "15:00",
"thu_1_open": "06:00",
"thu_1_close": "15:00",
"fri_1_open": "06:00",
"fri_1_close": "15:00",
"sat_1_open": "08:00",
"sat_1_close": "15:00",
"sun_1_open": "08:00",
"sun_1_close": "15:00"
}
我正在尝试将其转换为以下格式:
"hours": [ {
"weekDay": 1, // mon_1
"startTime": "10:00",
"endTime": "16:00"
},
{
"weekDay": 1, //mon_2
"startTime": "11:00",
"endTime": "12:00"
},
{
"weekDay": 2, //tues_1
"startTime": "06:00",
"endTime": "15:00"
}
]
有没有办法有效地做到这一点?或者我是否必须为每个打开和关闭对迭代两次列表?
答案 0 :(得分:1)
var hours = {
"mon_1_open": "10:00",
"mon_1_close": "16:00",
"mon_2_open": "11:00",
"mon_2_close": "12:00",
"tue_1_open": "06:00",
"tue_1_close": "15:00",
"wed_1_open": "06:00",
"wed_1_close": "15:00",
"thu_1_open": "06:00",
"thu_1_close": "15:00",
"fri_1_open": "06:00",
"fri_1_close": "15:00",
"sat_1_open": "08:00",
"sat_1_close": "15:00",
"sun_1_open": "08:00",
"sun_1_close": "15:00"
};
var oneWeekDay = {}, newHours = [], start = "", end = "", numWeekDay = 0;
var keys = "";
for (x in hours) {
if(keys.indexOf(x) != -1) {
continue;
}
switch (x.substr(0, 3)) {
case "mon":
numWeekDay = 1;
break;
case "tue":
numWeekDay = 2;
break;
case "wed":
numWeekDay = 3;
break;
case "thu":
numWeekDay = 4;
break;
case "fri":
numWeekDay = 5;
break;
case "sat":
numWeekDay = 6;
break;
case "sun":
numWeekDay = 7;
break;
default:
numWeekDay = 0;
}
start = x.substr(0, 6) + "open";
end = x.substr(0, 6) + "close";
oneWeekDay = {
"weekDay": numWeekDay,
"startTime": hours[start],
"endTime": hours[end]
};
newHours.push(oneWeekDay);
keys += start + ",";
keys += end + ",";
}
console.log(newHours);