我正在尝试在页面上使用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。