使用JavaScript从表中为多系列FusionCharts创建数据集

使用JavaScript从表中为多系列FusionCharts创建数据集,javascript,fusioncharts,Javascript,Fusioncharts,我有一个表中的数据: var my_data = [ {"series":"group1", "type":"device1", "value":15}, {"series":"group1", "type":"device3", "value":12}, {"series":"group2", "type":"device1", "value":16}, {"series":"group2", "type":"device1", "value":11}, {"series":"group2",

我有一个表中的数据:

var my_data = [
{"series":"group1", "type":"device1", "value":15},
{"series":"group1", "type":"device3", "value":12},
{"series":"group2", "type":"device1", "value":16},
{"series":"group2", "type":"device1", "value":11},
{"series":"group2", "type":"device2", "value":17},
{"series":"group2", "type":"device2", "value":18},
{"series":"group2", "type":"device3", "value":10},
{"series":"group2", "type":"device4", "value":14},
{"series":"group3", "type":"device1", "value":13},
{"series":"group3", "type":"device3", "value":19},
{"series":"group3", "type":"device4", "value":11},
{"series":"group3", "type":"device4", "value":15}
];
我正在努力将代码转换为FusionCharts多系列图表所需的类别和数据集。。。结果应该是:

var my_categories = [{"category": [{"label": "device1"}, {"label": "device2"}, {"label": "device3"}, {"label": "device4"}]}];

var my_dataset = [
{"seriesname": "group1", "data": [{"value": 15}, {"value": 0}, {"value": 12}, {"value": 0}]}, 
{"seriesname": "group2", "data": [{"value": 27}, {"value": 35}, {"value": 10}, {"value": 14}]},
{"seriesname": "group3", "data": [{"value": 13}, {"value": 0}, {"value": 19}, {"value": 26}]}
];
挑战在于数据集顺序必须与类别匹配,并且数据值需要汇总到每个类别的单个设备

如何转换这些数据?我假设第一步是使用for循环获取类别。但在那之后,我就被难倒了

这是工作图表,但数据已手动转换:

您可以为类别创建一些辅助对象,并作为对同一系列的引用。然后为一个新系列构建一个对象,该对象具有一个包含所有零值的值数组

至少将值添加到相应的对象

此建议适用于未排序的数据,但第一次出现的顺序构建了序列的顺序。如有必要,可在以后对其进行排序

var数据=[{series:“group1”,type:“device1”,value:15},{series:“group1”,type:“device3”,value:12},{series:“group2”,type:“device1”,value:16},{series:“group2”,value:11},{series:“group2”,type:“device2”,value:17},{series:“group2”,type:“device2”,value:18},{series:“group2”,type:“device3”,值:10},{系列:“group2”,类型:“device4”,值:14},{系列:“group3”,类型:“device1”,值:13},{系列:“group3”,类型:“device3”,值:19},{系列:“group3”,类型:“device4”,值:11},{系列:“group3”,类型:“device4”,值:15},
类别=[{category:[{label:“device1”},{label:“device2”},{label:“device3”},{label:“device4”}]}],
结果=数据。减少(功能(类别){
var catIndex=categories.reduce(函数(r,o,i){
r[o.标签]=i;
返回r;
}, {}),
series=Object.create(空);
返回函数(r,o){
如果(!系列[o.系列]){
系列[o.系列]={
系列名称:o.series,
数据:categories.map(函数(){return{value:0})
};
r、 推(系列[o.系列]);
}
系列[o.series]。数据[catIndex[o.type]]。值+=o.value;
返回r;
};
}(类别[0]。类别,[]);
console.log(结果);

.as控制台包装{最大高度:100%!重要;顶部:0;}
我会首先将我的_数据展平,然后将所有值相加,这样每个设备/组/值集就只有一行。然后,按设备对新数组排序,然后分组并迭代,在一次迭代中同时创建类别和数据集。是数据吗(始终)按
系列排序
?它始终可以按系列排序,我可以控制sql表中的输入…我还可以在它到达脚本之前将其展平。谢谢。这很有效,正是我想要的。