Highchart生成阵列系列

时间:2016-06-12 22:22:30

标签: javascript arrays highcharts

我正在开发一个项目,并希望通过将系列数组分配给高图来动态创建高级图。我使用一些虚拟数据来生成数组,但是,在我下面提供的示例中,两列非常相同,这是不期望的。     examples

$(function () {
  var field_result = new Object();
  var series = [];
  var result_array = [];

  var fields = [32, 22]
  for (var i=0; i<fields.length; i++)
  {   
    field_result.name = fields[i];
    for (var m=0; m<4; m ++) {
      result_array[m] = Math.random()*10;
    }
    field_result.data = result_array;
    series.push(field_result);
  }


  $('#container').highcharts({
    chart: {
        type: 'column'
    },
    title: {
        text: 'Column chart with negative values'
    },
    xAxis: {
        categories: ['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas']
    },
    credits: {
        enabled: false
    },
    series: series
  });
});

非常感谢你。

1 个答案:

答案 0 :(得分:1)

您打算使用单独的数据阵列创建两个不同的系列对象,并将它们放在系列数组中。但是你要在循环外为每个单独的系列初始化这些对象,所以你最终会用第二个数据覆盖第一个数据对象。

你只需要在循环中移动初始化:

$(function () {
  var series = [];    
  var fields = [32, 22];

  for (var i=0; i<fields.length; i++)
  {   
    var field_result = new Object(); // <---- moved here
    var result_array = [];           // <---- moved here

    field_result.name = fields[i];
    for (var m=0; m<4; m ++){
      result_array[m] = Math.random()*10;    
    }
    field_result.data = result_array;
    series.push(field_result);
  }
  [...]

然后在每次循环迭代中,将创建一个新的对象和数组,并用随机数据填充。

http://jsfiddle.net/doc_snyder/jgoyynzd/2/