我正在尝试根据以下JSON汇总HighCharts柱形图的数据。每个组中的数据各不相同,如果对应的X系列没有数据,HighCharts要求其Y轴数据为0。首先,我具有以下JSON:
{
"groups": {
"1567310400000": [
{
"groupName": "Fruits",
"documentCount": 5
}
],
"1569902400000": [
{
"groupName": "Fruits",
"documentCount": 1
},
{
"groupName": "Desserts",
"documentCount": 5
},
{
"groupName": "Vegetables",
"documentCount": 6
}
]
}
}
所需的输出:我想从上面的数据创建一个对象的排序数组,如下所示:
[{
name: 'Desserts',
data: [0, 5]
}, {
name: 'Fruits',
data: [5, 1]
}, {
name: 'Vegetables',
data: [0, 6]
}]
到目前为止,我有以下代码:
const chartXAxisData = [];
const chartYAxisData = [];
const names = [];
const doccounts = [];
for (const key in data.groups) {
chartXAxisData.push(formatDate(key, 'MMM dd, yyyy', 'en-US', 'GMT').toString());
for (let i = 0; i < data.groups[key].length; i++) {
const groupname = data.groups[key][i].groupName;
const doccount = data.groups[key][i].documentCount;
if ( names.includes(groupname)) {
doccounts[names.indexOf(groupname)].push(doccount);
} else {
names.push(groupname);
doccounts.push([doccount]);
}
}}
for (const name in names) {
chartYAxisData.push({
name: names[name],
data: doccounts[name]
});
}
这将提供以下输出,而不是所需的输出:
[{
name: 'Desserts',
data: [5]
}, {
name: 'Fruits',
data: [5, 1]
}, {
name: 'Vegetables',
data: [6]
}]
如何修复代码以获得所需的输出?
一种方法是使用辅助字典groupName
作为键。检查我为您制作的这段代码,
const data = {
groups: {
"1567310400000": [
{
groupName: "Fruits",
documentCount: 5
}
],
"1569902400000": [
{
groupName: "Fruits",
documentCount: 1
},
{
groupName: "Desserts",
documentCount: 5
},
{
groupName: "Vegetables",
documentCount: 6
}
]
}
};
const keys = Object.keys(data.groups);
const dic = {};
for (let k = 0; k < keys.length; k++) {
for (const group of data.groups[keys[k]]) {
const groupName = group.groupName;
const documentCount = group.documentCount;
if (!dic.hasOwnProperty(groupName)) {
dic[groupName] = {
groupName,
data: new Array(keys.length).fill(0)
};
}
dic[groupName].data[k] = documentCount;
}
}
const values = Object.keys(dic).sort().map(n => dic[n]);
console.log(values);
结果
[ { groupName: 'Fruits', data: [ 5, 1 ] },
{ groupName: 'Desserts', data: [ 0, 5 ] },
{ groupName: 'Vegetables', data: [ 0, 6 ] } ]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句