我正在尝试在页面上使用jquery插件DataTables和highcharts.js显示相同的数据集。这样,当我更改数据时,表格和图表也会更改。我的数据是这样的:

var data = [
  {"itemName": "item1", "Jan": "4056479", "Feb": "3716377", "Mar": "6924148"},
  {"itemName": "item2", "Jan": "3034448", "Feb": "930077", "Mar": "1210250"},
  {"itemName": "item3", "Jan": "3938924", "Feb": "1624727", "Mar": "9626947"}
];


我可以使其与DataTables一起使用,但是尽管工作了几天,但我无法将其转换为Highcharts接受的格式。到目前为止,我可以显示以下数据集的图表:

series: [
  {
    index: 0,
    name: "Jan",
    data: [
      [data[0]["itemName"], parseFloat(data[0]["Jan"])],
      [data[1]["itemName"], parseFloat(data[1]["Jan"])],
      [data[2]["itemName"], parseFloat(data[2]["Jan"])],
    ]
  },
  {
    index: 1,
    name: "Feb",
    data: [
      [data[0]["itemName"], parseFloat(data[0]["Feb"])],
      [data[1]["itemName"], parseFloat(data[1]["Feb"])],
      [data[2]["itemName"], parseFloat(data[2]["Feb"])],
    ]
  },
  {
    index: 1,
    name: "Mar",
    data: [
      [data[0]["itemName"], parseFloat(data[0]["Mar"])],
      [data[1]["itemName"], parseFloat(data[1]["Mar"])],
      [data[2]["itemName"], parseFloat(data[2]["Mar"])],
    ]
  }
]};


有人可以给我一个单线for循环,以将Highcharts接受的第一组(基于itemName)转换为另一组(基于Months)。我有数据页。上述解决方案是不可管理的。

请参阅jsfiddle here

我希望我能标出两个答案。两者都解决了我的问题,我不知道哪个在技术上更好。感谢您的及时答复。

最佳答案




您可以使用以下功能过滤数据:

function filterData(data, key){
   var result = [];
   $.each(data, function(index, rcd){
       result.push([rcd['itemName'], parseFloat(rcd[key])]);
   });
   return result;
}


然后,对于HighCharts代码,您可以编写:

{
   index: 0,
   name: "Jan",
   data: filterData(data, "Jan")
}



  演示


有关代码和演示,请参见this jsFiddle

09-16 17:57