繁体   English   中英

如何正确转换堆栈图chartJS(数据转换)的数据?

[英]How to correctly transform data for a stack chart chartJS (data transformation)?

有来自服务器的数据

  const groupedChartData = [
    {
      duration: '00:00:10',
      stats: [
        {color: 'red', reason: 'yes', value: 11},
        {color: 'green', reason: 'no', value: 33},
      ]
    },
    {
      duration: '00:01:00',
      stats: [
        {color: 'black', reason: 'call back', value: 32},
        {color: 'green', reason: 'no', value: 77},
      ]
    },
    {
      duration: '00:10:00',
      stats: [
        {color: 'red', reason: 'yes', value: 14},
      ]
    }
  ]

根据服务端的数据,需要生成如下对象才能在图表上正确显示数据,即groupedChartData中stats对象的每个第一个值必须对应
到下一个对象中的第一个,第二个到第二个,以及

预期结果

let result = [
  {
    data: [11, 32, 14],
    backgroundColor: ['red', 'black', 'red']
  },
   {
    data: [33,77],
    backgroundColor: ['green', 'green']
  }
]

这种转换对于我在chartJS中形成这种图表是必要的。也许我做错了什么,不需要如此复杂的转换?无论如何,问题的本质是如何将我从服务器收到的 1 个结构带到我在预期结果中描述的那个结构中

我希望下面的注释代码对您有所帮助:

const result = []

groupedChartData.forEach(el=>{
  el.stats.forEach((el, ind)=>{
    //checking if position is null
    if(result[ind] == null){
      result[ind] = {data:[], backgroundColor: []}
    }
    //pushing new values to the new array
    result[ind].data.push(el.value)
    result[ind].backgroundColor.push(el.color)
  })
})

console.log(result)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM