Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

65
Vistas
Transforme la matriz JavaScript de objeto en formato largo para React-table

Cómo convertir una matriz de objetos de gran formato en un formato largo

Matriz de entrada:

 [ { series: "opening_balance", "Oct 2021": 12713238.3, "Nov 2021": 27713238.3, "Dec 2021": 22713238.3, }, { series: "inflow", "Oct 2021": 7, "Nov 2021": 40000000, "Dec 2021": 50000000, } ];

Matriz de salida:

 [ { year_month: "Oct 2021", opening_balance: 5, inflow: 100 }, { year_month: "Nov 2021", opening_balance: 10, inflow: 200 }, { year_month: "Dec 2021", opening_balance: 15, inflow: 150 }, ];

El resultado también fueron los datos originales provenientes de la llamada a la API. Se transformó en un formato ancho para usar en React-table, y funcionó.

Sin embargo, las celdas de la tabla ahora se pueden editar y necesita actualizar los datos de origen en otro componente; y por lo tanto, necesita obtener el formato original.

Intenté varias formas pero no pude tener éxito. A continuación se muestra el código que no funciona.

 let data = [ { series: "opening_balance", "Oct 2021": 5, "Nov 2021": 10, "Dec 2021": 15, }, { series: "inflow", "Oct 2021": 100, "Nov 2021": 200, "Dec 2021": 150, }, ]; let results = data.map((row) => { let keys = Object.keys(row); let x = keys.map((key) => { return { year_month: key, value: row[key] }; }); return [...x]; }); console.log("results:", results);

produce

 results: [ [ { year_month: 'series', value: 'opening_balance' }, { year_month: 'Oct 2021', value: 5 }, { year_month: 'Nov 2021', value: 10 }, { year_month: 'Dec 2021', value: 15 } ], [ { year_month: 'series', value: 'inflow' }, { year_month: 'Oct 2021', value: 100 }, { year_month: 'Nov 2021', value: 200 }, { year_month: 'Dec 2021', value: 150 } ] ]

¿Alguien podría ayudar a transformar los datos?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Mi sugerencia para usted sería hacer que la transformación en el backend pueda estar en la capa de la base de datos o en la capa de la API.

Aunque la transformación se puede hacer así de la manera difícil: https://stackblitz.com/edit/node-8u47y6?file=index.js

 const arr = [ { series: 'opening_balance', 'Oct 2021': 12713238.3, 'Nov 2021': 27713238.3, 'Dec 2021': 22713238.3, }, { series: 'inflow', 'Oct 2021': 7, 'Nov 2021': 40000000, 'Dec 2021': 50000000, }, { series: 'customXYZ', 'Oct 2021': 1, 'Nov 2021': 2, 'Dec 2021': 3, }, ]; const hashMap = {}; // Creating the hashmap for each year_month arr.forEach((obj) => { const series = obj.series; Object.entries(obj).forEach(([key, value]) => { if (key !== 'series') { if (!hashMap[key]) { hashMap[key] = {}; } hashMap[key][series] = value; } }); }); // transforming the same to array like values const result = Object.entries(hashMap).map(([key, value]) => ({ year_month: key, ...value, })); console.log(result);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda