我正在尝试使用来自多个本地保存的json文件的数据构建一个高图条形图,并且遇到一些麻烦。为简单起见,我想循环遍历所有文件,搜索特定字符串并使用count作为图表的数据。我这样做了:
options.series[0].name = 'Test';
options.series[0].data = [];
//Loop over the different local files and do a search count in each
var localfiles = new Array('localfile1.json', 'localfile2.json');
for (var i=0; i<locfiles.length; i++) {
//do a count here
$.getJSON(localfiles[i], function(data) {
var count = 0;
var index = 0;
var entry;
for (index = 0; index < data.length; ++index) {
entry = data[index];
if (entry.searchkey == "searchstring") {
count ++;
}
options.series[0].data.push(count);
});
});
var chart = new Highcharts.Chart(options);
我意识到我没有正确地传递选项数组。但我不知道我应该用这种方式编写代码。有什么建议吗?
提前致谢。
答案 0 :(得分:1)
要获得2个柱,你需要将options.series[0].data.push(count);
置于第二个循环之外,否则你最终将会有很多成长的栏杆
options.series[0].name = 'Test';
options.series[0].data = [];
//Loop over the different local files and do a search count in each
var localfiles = new Array('localfile1.json', 'localfile2.json');
for (var i=0; i<locfiles.length; i++) {
//do a count here
$.getJSON(localfiles[i], function(data) {
var count = 0;
var index = 0;
var entry;
for (index = 0; index < data.length; ++index) {
entry = data[index];
if (entry.searchkey == "searchstring") {
count ++;
}
});
options.series[0].data.push(count);
});
var chart = new Highcharts.Chart(options);
这样你就可以为每个json文件获得1个小时
回答你的评论
您可以使用addSeries
var series1 = {
data: [],
name: ""
}
chart.addSeries(series1);
如果你想删除所有以前的系列,你可以这样做
while(chart.series.length > 0){
chart.series[0].remove(true);
}