Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数组对象转换为另一个对象javascript第2部分_Javascript_Arrays - Fatal编程技术网

将数组对象转换为另一个对象javascript第2部分

将数组对象转换为另一个对象javascript第2部分,javascript,arrays,Javascript,Arrays,这是我们的后续问题 .现在我想做一个反向工程,我想将JOSN转换回原始格式,除了它是一个对象,如下面的示例所示 var data1=[ { "name": "Coal", "value": "2", "time": "2015-11-31 00:00:00", "level":"10" }, { "name": "Shale", "value": "4",

这是我们的后续问题 .现在我想做一个反向工程,我想将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"
    }

]


结果是一个对象而不是一个数组。有人能帮我解决这个问题吗

你到目前为止大致尝试了什么:为了。。数据2[value['name']][value['time']]=value['value']]–获取它并使用它运行。快跑,忘了,快跑@Joromanda X如果我把所有的月都给你的话,我得到的月不是一个函数是的。我输入了一个错误,请用这个JSON检查函数,var data1=var data1=[{name:Shale,value:2,time:2015-10-31 00:00:00},{name:Shale,value:2,time:2015-09-30 00:00:00},{name:Coal,value:2,time:2015-08-31 00:00:00}]我只得到11月的数据,其余的日期都没有定义啊,你需要解析…,10个月,因为javascript..我想知道你是否自己调试过它?x.level=datum.level
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;
}, {});
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;
}, {});