2016-11-17 161 views
0

这是我现在拥有的。如何将对象数组(对键值对)仅转换为嵌套数组

[ 
    [ 
     {"label":"Year","type":"number"}, 
     {"label":"Value","type":"number"}, 
    ], 
    {"2013" : 70}, 
    {"2014" : 78}, 
    {"2015" : 125}, 
    {"2016" : 153} 
] 

这是我用来生成上面的代码。

var data = [ 
    {"Year":2013,"Product":"A","Value":0}, 
    {"Year":2013,"Product":"B","Value":20}, 
    {"Year":2013,"Product":"A","Value":50}, 
    {"Year":2014,"Product":"D","Value":55}, 
    {"Year":2014,"Product":"M","Value":23}, 
    {"Year":2015,"Product":"D","Value":73}, 
    {"Year":2015,"Product":"A","Value":52}, 
    {"Year":2016,"Product":"B","Value":65}, 
    {"Year":2016,"Product":"A","Value":88} 
]; 

var sum = data.reduce(function(res, product) { 

    if (!(product.Year in res)) { 
    res[product.Year] = product.Value; 
    } else { 
    res[product.Year] += product.Value; 
    } 
    return res; 
}, {}); 

var result = []; 

for (var year in sum) { 
    var tmp = {}; 
    tmp[year] = sum[year]; 
    result.push(tmp); 
} 
result.splice(0, 0, [{ 
    label: 'Year', 
    type: 'number' 
}, { 
    label: 'Value', 
    type: 'number' 
}]); 

,我想将它们整理到[Year, Value]对而不是对象,像这样:

[["Year", "Value"], ["2013", 70], ["2014", 78], ["2015", 125], ["2016", 153]] 
+0

您的意思是否'[“年”,“价值”] ...'你要转换为数组只 - 作为你所寻求的输出不是一个对象 –

+0

一些JSON文档 - https://stackoverflow.com/documentation/javascript/416/json#t=201611170509482255405 –

+0

是的,实际上我需要这些数据为google.visualization。 arrayToDataTable(); – Khan

回答

0

您正在推动的对象({})到阵列。你想要的是在第二行使用数组括号代替([])如下图所示:

for (var year in sum) { 
    var tmp = []; 
    tmp[year] = sum[year]; 
    result.push(tmp); 
} 
相关问题