开发者问题收集

Highchart 生成数组系列

2016-06-12
406

我正在做一个项目,想通过将系列数组分配给 highchart 来动态创建 highchart。我使用一些虚拟数据来生成数组,但是,在下面提供的示例中,两列完全相同,这是意料之外的。 示例

$(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个回答

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

您只需将初始化移到循环内:

$(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/

Martin Schneider
2016-06-13