【发布时间】:2020-06-16 02:48:45
【问题描述】:
我有以下 JSON 字符串,我正在尝试按类别对其进行分组。
例如:
[{
"category": "Messaging",
"data": [7433],
"backgroundColor": "rgba(255, 99, 132, 0.2)",
"borderColor": "rgba(255,99,132,1)",
"borderWidth": 2
}, {
"category": "Price Promo",
"data": [774],
"backgroundColor": "rgba(255, 159, 64, 0.2)",
"borderColor": "rgba(255, 159, 64, 1)",
"borderWidth": 2
}, {
"category": "Usability",
"data": [5993],
"backgroundColor": "rgba(255, 159, 64, 0.2)",
"borderColor": "rgba(255, 159, 64, 1)",
"borderWidth": 2
}, {
"category": "Messaging",
"data": [7624],
"backgroundColor": "rgba(255, 99, 132, 0.2)",
"borderColor": "rgba(255,99,132,1)",
"borderWidth": 2
}, {
"category": "Price Promo",
"data": [900],
"backgroundColor": "rgba(255, 159, 64, 0.2)",
"borderColor": "rgba(255, 159, 64, 1)",
"borderWidth": 2
}, {
"category": "Usability",
"data": [5865],
"backgroundColor": "rgba(255, 159, 64, 0.2)",
"borderColor": "rgba(255, 159, 64, 1)",
"borderWidth": 2
}, {
"category": "Messaging",
"data": [7161],
"backgroundColor": "rgba(255, 99, 132, 0.2)",
"borderColor": "rgba(255,99,132,1)",
"borderWidth": 2
}, {
"category": "Price Promo",
"data": [1005],
"backgroundColor": "rgba(255, 159, 64, 0.2)",
"borderColor": "rgba(255, 159, 64, 1)",
"borderWidth": 2
}, {
"category": "Usability",
"data": [5940],
"backgroundColor": "rgba(255, 159, 64, 0.2)",
"borderColor": "rgba(255, 159, 64, 1)",
"borderWidth": 2
}]
至(预期结果):
{
label: 'Messaging',
data: [7433, 7624, 7161],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(255, 99, 132, 0.2)',
'rgba(255, 99, 132, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(255,99,132,1)',
'rgba(255,99,132,1)'
],
borderWidth: 2
}
共有三个类别。我如何在 javascript 中执行此操作:
下面的尝试代码,但这仅适用于数据属性,而不适用于背景颜色和边框颜色等:
for (var i = 0; i < stackBarData.length; i++) {
var categoryName = stackBarData[i].category;
if (!groups[categoryName]) {
groups[categoryName] = [];
}
groups[categoryName].push(stackBarData[i].data);
}
stackBarData = [];
for (var categoryName in groups) {
stackBarData.push({
label: categoryName,
data: groups[categoryName]
});
}
dataSet = stackBarData.map(x => ({
label: x.label,
data: x.data.map(y => y[0])
}));
如何更改以上内容以在我的分组中包含背景颜色、边框颜色、边框宽度?
【问题讨论】:
-
为什么
borderWidth在结果中是一个数字?如果输入对象没有相同的边框宽度怎么办? -
它总是有相同的边框宽度
-
而
data总是一个只有一个元素的数组? -
是的数据总是有一个值,但是当我将它组合在一起时,它应该是 [X,Y,Z]
标签: javascript arrays