2016-07-22 71 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' 
    }, 
    ..... 
});