使用Javascript将JSON文件过滤为不同的JSON文件

roa*_*oad -1 javascript json

我得到了以下JSON文件,其密钥为日期:

main  [{"2018-01-01":277,"2018-01-08":361,
      "2018-02-05":357,"2018-02-12":367,
      "2018-03-05":481,"2018-03-12":445,
      "2018-04-02":484,"2018-04-09":345}] 
Run Code Online (Sandbox Code Playgroud)

我试图将它们分成3个不同的JSON文件,每个月一个文件。我尝试了这个:

var jan =[];
for(key in main){
   if(key.substring(0,7) == "2018-01"){
      jan.push(main[key],key)
   }
}
Run Code Online (Sandbox Code Playgroud)

但是我有这个: 

["2018-01-01", 277, "2018-01-08", 361, "2018-01-15", 426, "2018-01-22", 389, "2018-01-29", 394]
Run Code Online (Sandbox Code Playgroud)

但是我想这样:

jan = {"2018-01-01":277,"2018-01-08":361, ..} fev = {"2018-02-05":357,"2018-02-12":367, ...}

任何的想法 ?谢谢

Dar*_*rov 5

您可以使用以下reduce方法按月份对项目进行分组:

var main = {
    "2018-01-01":277,"2018-01-08":361,
    "2018-02-05":357,"2018-02-12":367,
    "2018-03-05":481,"2018-03-12":445,
    "2018-04-02":484,"2018-04-09":345
};

var result = Object.keys(main).reduce((r, a) => {
    var month = a.substr(5, 2);
    r[month] = r[month] || [];
    var obj = {};
    obj[a] = main[a];
    r[month].push(obj);
    return r;
}, Object.create(null));
Run Code Online (Sandbox Code Playgroud)

在此阶段,结果将如下所示:

{
    "01": [{ "2018-01-01": 277 }, { "2018-01-08": 361 }],
    "02": [{ "2018-02-05": 357 }, { "2018-02-12": 367 }],
    "03": [{ "2018-03-05": 481 }, { "2018-03-12": 445 }],
    "04": [{ "2018-04-02": 484 }, { "2018-04-09": 345 }]
}
Run Code Online (Sandbox Code Playgroud)

现在,遍历此结果的键并合并项目应该很简单。