我有以下数据:
var data = {"categories":["GLA Age: 65+"],"series":[{"name":"Hendon","data":[11.98]},{"name":"High Barnet","data":[17.86]},{"name":"Mill Hill","data":[13.73]},{"name":"Oakleigh","data":[17.42]},{"name":"Totteridge","data":[17.76]}]};
我需要“名称”作为类别名称,因此我使用“事件>加载”将其应用到 highcharts 代码:
var seriesData = this.series;
var tCategories = [];
for (i = 0; i < seriesData.length; i++) {
tCategories.push(seriesData[i].name);
}
this.xAxis[0].setCategories(tCategories);
然后我需要将“数据”设置为一个数组,例如
[11.98, 17.86, 13.73, 17.42, 17.76]
我遇到的问题是第一批数据显示在第一个栏中:
示例如下:http://jsfiddle.net/zidski/13rexxyo/3/
创建新数组的代码 ([11.98, 17.86, 13.73, 17.42, 17.76])
var arrayofArrays = data.series.map(function (item) {
return JSON.stringify([item.data]);
});
var seriesString = arrayofArrays;
seriesString = seriesString;
var n = JSON.stringify(seriesString).replace(/\[|]|"/g, '');
var g = '[' + n + ']';
var h = JSON.stringify(g);
var seriesC = JSON && JSON.parse(g) || $.parseJSON(g);
this.series[0].setData(seriesC);
最佳答案
如果我理解正确的话,它似乎过于复杂(尽管您想要的结果并不完全清楚)。
您可以轻松地循环 JSON 并返回数据数组,而无需使用 stringify
或类似的东西,也不需要加载事件:
代码:
var title = rawData.categories[0];
var chartData = []
$.each(rawData.series, function(i, node) {
chartData.push({ 'name': node.name, 'y': node.data[0] })
});
然后:
series: [{
data: chartData
}]
更新的 fiddle :
输出:
关于javascript - 通过 highcharts 上的 setData 操作数组进行添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37074886/