Javascript 将json对象转换为json对象数组
我从Facebooks graph explorer获得了以下json对象:Javascript 将json对象转换为json对象数组,javascript,arrays,json,Javascript,Arrays,Json,我从Facebooks graph explorer获得了以下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", "we
"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"
}
]
有没有办法有效地做到这一点?或者,对于每个打开和关闭对,我必须在列表上迭代两次吗?原始数据键中的“1”和“2”部分是什么意思?在同一个工作日,您可以有多个打开和关闭时间。所以你可以看到周一有1和2,因为它有两个开盘时间和收盘时间。将这些时间视为餐厅的营业时间您必须问问自己,为什么,因为数据已经可用,但您可以对对象属性使用
.substring()
,即使迭代两次,它仍然足够有效。这么少的数据不会有任何明显的区别。
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);