Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将json对象转换为json对象数组_Javascript_Arrays_Json - Fatal编程技术网

Javascript 将json对象转换为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

我从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",
        "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);