javascript - 通过 highcharts 上的 setData 操作数组进行添加

标签 javascript jquery arrays highcharts

我有以下数据:

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 :

输出:

screenshot

关于javascript - 通过 highcharts 上的 setData 操作数组进行添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37074886/

相关文章:

php - 检查字符串是否包含数组中的值

javascript - 如何通过 JS 检测 CSS 转换的状态并跳过它

javascript - Backbone.js - 全局/共享/相关模型的最佳方法是什么?

javascript - 带有回调函数的异步 API 请求

javascript - 我如何进行初始 JavaScript Ajax 初始化?

javascript - JQuery - 仅比较选择输入中所有选项的文本的一部分,然后选择匹配的选项

python - 如何在列表或 np.array 中保留尾随零?

javascript - Node.js 导出属性

javascript - 使用本地存储的变量来清除间隔

python - 在 3d 数组中找到与另一个 3d 数组中的 2d 元素相似的 2d 元素