2015-09-28 59 views
-4

这是一个跟进问题Converting an object into array 。现在我想要做一个反向工程,我想将JOSN转换回原始格式,除了它的一个对象,如下面的例子所示。将数组对象转换为另一个对象 - 第2部分在javascript中

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" 

     } 
    } 

其结果为对象不是array.Can有人请帮助我在这个问题上

+0

你已经尝试到目前为止 – ozil

+0

大致来说:' for(..)data2 [value ['name']] [value ['time']] = value ['value']' - 接受并运行它。运行,forgottofly,跑! – deceze

回答

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; 
}, {}); 
+0

@Joromanda X我得到的月份不是一个函数,如果我给所有的月份 – forgottofly

+0

是啊。我 “制造” 一个错字 –

+0

感谢@Jaromanda – forgottofly

相关问题