¿Cómo puedo transformar esta matriz?
dataJson = [ { name: 'Indicator1', date: '2022-01-31', data: 4.85 }, { name: 'Indicator2', date: '2022-01-31', data: 6.00 }, { name: 'Indicator3', date: '2022-01-31', data: 14.85 }, { name: 'Indicator1', date: '2022-03-31', data: 10.50 }, { name: 'Indicator2', date: '2022-03-31', data: 21.00 } ]a esta forma
seriesData = [ { name: 'Indicator1', data: [4.85, 10.50]}, { name: 'Indicator2', data: [6.00, 21.00]}, { name: 'Indicator3', data: [14.85]} ]Sospecho que puedo usar dataJson.reduce() pero no sé cómo. ¿Alguna idea? Gracias
Puede usar array#reduce para agrupar según el name en un acumulador de objetos.
const dataJson = [ { name: 'Indicator1', date: '2022-01-31', data: 4.85 }, { name: 'Indicator2', date: '2022-01-31', data: 6.00 }, { name: 'Indicator3', date: '2022-01-31', data: 14.85 }, { name: 'Indicator1', date: '2022-03-31', data: 10.50 }, { name: 'Indicator2', date: '2022-03-31', data: 21.00 } ], result = Object.values(dataJson.reduce((r, {name, data}) => { r[name] ??= {name, data: []}; r[name].data.push(data); return r; },{})); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0; }