这是Converting an object into array的后续问题 。现在我想进行逆向工程,我想将JOSN转换回原始格式,除了它的对象,如下例所示。
var data1=[
{
"name": "Coal",
"value": "2",
"time": "2015-11-31 00:00:00",
"level":"10"
},
{
"name": "Shale",
"value": "4",
"time": "2015-10-31 00:00:00",
"level":"20"
}
]
到
var data2=
{
"Coal": {
"September 2015": "2",
"level":"10"
},
"Shale": {
"October 2015": "4",
"level":"20"
}
}
结果是一个对象而不是一个数组。任何人都可以帮我解决这个问题
答案 0 :(得分:1)
function yymmddToString(yymmdd) {
var months = ['January', 'February', 'March', 'April' .....];
var x = yymmdd.split('-');
return months[parseInt(x[1], 10)] + ' ' + x[0];
}
var result = data1.reduce(function(result, datum) {
var x = result[datum.name] = result[datum.name] || {};
x[yymmddToString(datum.time)] = datum.value;
return result;
}, {});