Hay datos que vienen del servidor.
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}, ] } ] Según los datos del servidor, debe generar el siguiente objeto para mostrar correctamente los datos en el gráfico, es decir, cada primer valor del objeto de estadísticas en groupedChartData debe corresponder
al primero en el siguiente objeto, el segundo al segundo, y
resultado esperado
let result = [ { data: [11, 32, 14], backgroundColor: ['red', 'black', 'red'] }, { data: [33,77], backgroundColor: ['green', 'green'] } ]Espero que el código comentado a continuación te ayude:
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)