我有一个像这样的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文件,因为它来自其他应用程序。
是否有可能获得所有生日"直接键而不迭代到所有日期?或者仍然可以迭代每个日期,但优化我的循环?
提前致谢
答案 0 :(得分:1)
您错误地使用$str = '{"t":"\u05D0\u05E0\u05D2\u05DC\u05D9\u05EA"}';
,并且根本不需要使用它,因此您可以进行一项改进。一个简单的map
循环就足够了。
您已经说过事件对象中的密钥不会改变,因此您可以避免for
循环,这很昂贵。
您还没有告诉我们您的代码中for-in
是什么,所以很难具体,但喜欢这个:
item