如何获得所有相同的JSON密钥?

时间:2017-01-20 09:22:34

标签: javascript arrays json

我有一个像这样的JSON文件:

{"Object":[
    { "date" : "Fri Jan 20 08:00:00",
        "events" : {
            "birthday" : { "num": 0 },
            "meeting" : { "num" : 2 },
            "reminder" : { "num" : 1}  
        }
    } ,
    { "date" : "Fri Jan 21 08:00:00",
        "events" : {
            "birthday" : { "num": 1 },
            "meeting" : { "num" : 0 },
            "reminder" : { "num" : 2}  
        }
    }]
}

目前我在地图中使用map()for()循环来格式化我的结果(这不是确切的代码,我不会在这台计算机上使用它):

results.map(function(objDate){
    arrDate.push(objDate.date);
    for(var value in objDate.events){
        arrValue[item].push(objDate.events[value])
    }    
});

(我需要数组才能显示图表) 这给了我2个数组:

arrDate: ["Fri Jan 20 08:00:00", "Fri Jan 21 08:00:00"]
arrValues: [[0,1],[2,0],[1,2]]

这很好用,但是当我的JSON文件给我太多结果(比如600,000)时,需要时间(不是很多,但仍然太多)来格式化它。

我无法更改JSON文件,因为它来自其他应用程序。

是否有可能获得所有生日"直接键而不迭代到所有日期?或者仍然可以迭代每个日期,但优化我的循环?

提前致谢

1 个答案:

答案 0 :(得分:1)

您错误地使用$str = '{"t":"\u05D0\u05E0\u05D2\u05DC\u05D9\u05EA"}'; ,并且根本不需要使用它,因此您可以进行一项改进。一个简单的map循环就足够了。

您已经说过事件对象中的密钥不会改变,因此您可以避免for循环,这很昂贵。

您还没有告诉我们您的代码中for-in是什么,所以很难具体,但喜欢这个:

item