2016-07-22 63 views
1

我在簡單的html頁面中使用C3環形圖。當我使用下面的代碼圖表負荷沒有錯誤:C3圖json數據格式爲Javascript

json : [{"Total Participants":4825},{"Male":3019},{"Female":1806},], 
keys : { 
    value : ['Total Participants', 'Male', 'Female' ], 
} 

但我必須建立輸入兩個「JSON」和「鑰匙」使用JavaScript,以便它不是一成不變的。請注意,我不想在這裏使用ajax。我只是想用JavaScript來構建輸入

[{"Total Participants":4825},{"Male":3019},{"Female":1806},] 

['Total Participants', 'Male', 'Female' ] 

。這是我嘗試過的代碼,哪些都不起作用。

var keysChart = '['; 
var chartJsonData = '['; 

for (var i = 0; i < data.length; i++) { 
    keysChart += data[i].title; 
    if(i < data.length - 1) keysChart += ','; 
    chartJsonData += '{'; 
     chartJsonData += data[i].title; 
     chartJsonData += ':'; 
     chartJsonData += data[i].value; 
     chartJsonData += '}'; 
     chartJsonData += ',' 
} 

chartJsonData += ']'; 
keysChart += ']'; 

上述代碼的輸出看起來類似於我想要但它不工作。我相信可能會有一些格式問題。

我使用以下面的方式所生成的數據:

json : chartJsonData, 
keys : { 
    value : keysChart, 
} 

具有在控制檯以下錯誤:

Uncaught TypeError: a.forEach is not a function 
+0

也許這是一個問題無線數組後的逗號後稱爲值 –

+0

什麼是數據[i] .title?或者你想使用tableData [i] .title? –

+0

@AlexandruMhai對不起,我感到困惑。編輯帖子。標題是['總參與者','男','女']。值爲[4825,3019,1806] – FlintOff

回答

1
var arrData = []; 
var keysForChart = []; 

var jsJsonObj = new Object(); 

for (var it = 0; it < data.length; it++) { // data from an external json file. 
    keysForChart.push(data[it].title); 
    jsJsonObj[data[it].title] = data[it].value; 
} 

arrData.push(jsJsonObj); 

然後用下面的代碼

生成的圖表
c3.generate({ 
    bindto : '#chart', 
    data : { 
    json : arrData, 
    keys : { 
     value : keysForChart 
    }, 
    type : 'bar' 
    }, 
    ..... 
});