您好我有一个json文件,其数据存储如下:
[{"cake": "cake1","order": 20},{"cake": "cake2","order": 34},{"cake": "cake3",
"order": 11}, {"cake": "cake4","order": 11}, {"cake": "cake5", "order": 5}]
现在我想使用谷歌的饼图代表上述数据,但为了做到这一点,它需要采用以下格式:
[ ['Cake', 'No of Orders'], ['cake1', 20],['cake2',34],
['cake3', 11],['cake4',11],['cake5',5] ]
google的图表文档指定应该像这样传递数据:
var data = google.visualization.arrayToDataTable([
['Cake', 'No of Orders'],
['cake1', 20],
['cake2', 34],
['cake3', 11],
['cake4', 11],
['cake5', 5]
]);
请如何将上面的原始格式更改为包含javascript中的几个列表的列表。很多帮助将不胜感激。
答案 0 :(得分:1)
也许使用array .map()
method更改数据格式,然后使用array .unshift()
method在新数组的开头插入标题:
var input = [{"cake": "cake1","order": 20},{"cake": "cake2","order": 34},
{"cake": "cake3", "order": 11}, {"cake": "cake4","order": 11},
{"cake": "cake5", "order": 5}];
var output = input.map(function(item) { return [item.cake, item.order]; });
output.unshift(["Cake", "No of Orders"]);
var data = google.visualization.arrayToDataTable(output);
答案 1 :(得分:0)
这样的事情怎么样?尝试在jsbin中运行它。
var a = [{"cake": "cake1","order": 20},{"cake": "cake2","order": 34},{"cake": "cake3",
"order": 11}, {"cake": "cake4","order": 11}, {"cake": "cake5", "order": 5}];
function cakeFormat(a){
var first = [];
console.log(a);
// noprotect
for(var i = 0; i < a.length; i++){
for(var j in a[i]){
first.push([j, a[i][j]]);
}
}
var final = [["Cake", "No of Orders"]];
for(var k = 0; k < (first.length - 1);){
final.push([first[k][1], first[k+1][1]]);
k = k + 2;
}
return final;
}
cakeFormat(a);