2016-11-17 145 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); 
} 
相關問題