我正在尝试将多个数组合并到一个对象中,然后我可以迭代该对象以在 chart.js 数据集中使用。我有一组如下所示的数据:
export const data = [
{
'name': 'Flow',
'values': {
'sent': 410,
'responded': 253,
'secured': 65
}
}
]
(我将其限制为一个,但数据集要大得多)
然后我有几个基于这些数据构建的数组:
this.labels = data.map(item => item.name);
this.colors = ['#439ff4', '#5ec3d5', '#a068e5'];
this.responded = data.map(item => item.values.responded);
this.sent = data.map(item => item.values.sent);
this.secured = data.map(item => item.values.secured);
我需要做的是:
将键、颜色、响应、发送和保护的数组合并到一个称为数据集的对象中。
this.datasets = [ /* not sure what to do here! */];
最终我在图表 js 中的图表正在寻找这样的东西(我目前有部分硬编码的值:
datasets: [
{
label: 'Sent',
data: this.sent,
backgroundColor: '#439ff4'
},
{
label: 'Responded',
data: this.responded,
backgroundColor: '#5ec3d5'
},
{
label: 'Secured',
data: this.secured,
backgroundColor: '#a068e5'
}
],
我最终想表达为
datasets: this.datasets,
我希望我能很好地解释我正在尝试做的事情。
假设 in 中的键名data.values
保持小写,否则与 相同datasets[*].label
,您可以执行以下操作。
// the custom type is just for making it more manageable, omit it if you want
type DatasetItem = { label: string, data: number[], backgroundColor: string };
let datasets: Array<Partial<DatasetItem>> = [
{
label: 'Sent',
backgroundColor: '#439ff4'
},
{
label: 'Responded',
backgroundColor: '#5ec3d5'
},
{
label: 'Secured',
backgroundColor: '#a068e5'
}
];
const data = [
{
'name': 'Flow1',
'values': {
'sent': 410,
'responded': 253,
'secured': 65
}
},
{
'name': 'Flow2',
'values': {
'sent': 411,
'responded': 254,
'secured': 66
}
}
];
datasets.forEach((item) => item.data = data.map((d) => d.values[item.label.toLowerCase()]));
console.log(datasets);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句