así que necesito convertir una matriz que contiene datos de filas tabulares en datos de columnas en un formato específico para poder usarlo para mostrar un gráfico con Recharts.
Mis datos están en el siguiente formato:
rows = [ ['Year', '2010', '2011', '2012', '2013'], ['wages','2000','2000','2050','2050'], ['purchase cost', '4000', '4300', '4500', '5000'] ]Necesito que los datos estén formateados de la siguiente manera:
columns = [ {'Year' : '2010', 'wages' : '2000', 'purchase cost' : '4000'}, {'Year' : '2011', 'wages' : '2000', 'purchase cost' : '4300'}, {'Year' : '2012', 'wages' : '2050', 'purchase cost' : '4500'}, {'Year' : '2013', 'wages' : '2050', 'purchase cost' : '5000'} ]Estuve cerca de obtener el resultado que necesito, pero parece que no puedo hacerlo funcionar, ¡así que agradecería cualquier ayuda con esto!
Mantener dos principios
Lo implementé en varios pasos, puede consultar el siguiente código.
const rows = [ ['Year', '2010', '2011', '2012', '2013'], ['wages', '2000', '2000', '2050', '2050'], ['purchase cost', '4000', '4300', '4500', '5000'] ]; const property = rows.map(row => row[0]); const columns = rows.map(row => { row.shift(); return row }); const data = columns.map((column, i) => { return column.map(col => { const obj = {}; obj[property[i]] = col; return obj; }); }); const result = new Array(columns[0].length); for (let i = 0; i < result.length; i++) { const obj = {}; for (let j = 0; j < property.length; j++) { for (const [key, value] of Object.entries(data[j][i])) { obj[key] = value; } } result[i] = obj; } console.log(result);