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

103
Vistas
Cambiar la estructura de la matriz de JavaScript

Soy un principiante en javascript y tengo un pequeño problema. quiero cambiar la estructura de la matriz para renderizar en React Native usando la sección Lista,

Obtuve este JSON de Web Api

 [ { title: "Test", c: 1, d: 2, }, { title: "Test", c: 3, d: 4, }, { title: "Test", c: 5, d: 6, }, { title: "Test01", c: 1, d: 2, }, { title: "Test01", c: 3, d: 4, }, { title: "Test01", c: 5, d: 6, }, { title: "Test02", c: 1, d: 2, }, { title: "Test02", c: 3, d: 4, }, { title: "Test02", c: 5, d: 6, }, ];

Y quiero cambiar este JSON así

 [ { title: "Test", data: [ { c: 1, d: 2 }, { c: 3, d: 4 }, { c: 5, d: 6 }, ], }, { title: "Test01", data: [ { c: 1, d: 2 }, { c: 3, d: 4 }, { c: 5, d: 6 }, ], }, { title: "Test02", data: [ { c: 1, d: 2 }, { c: 3, d: 4 }, { c: 5, d: 6 }, ], }, ];
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Sería más sencillo ingresar sus datos en el nombre de la prueba, pero puede lograr lo que desea mapeando su matriz de esta manera:

 let new_array=[]; your_array.forEach(elem => { let title = elem.title; let matchingIndex = newArray.findIndex(a => a.title = title); if (matchingIndex === -1) { new_array.push({title} matchingIndex = new_array.length - 1; } let dataColumns = ['c', 'd']; let data = {}; dataColumns.forEach(col => { data[col] = elem[col]; }); if (!Array.isArray(new_array[matching_index].data)) { isArray(new_array[matching_index].data = []; } new_array[matching_index].data.push(data); });

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede realizar la operación de reducción en la matriz y obtener el formato deseado.

 const items = [ { title: "Test", c: 1, d: 2, }, { title: "Test", c: 3, d: 4, }, { title: "Test", c: 5, d: 6, }, { title: "Test01", c: 1, d: 2, }, { title: "Test01", c: 3, d: 4, }, { title: "Test01", c: 5, d: 6, }, { title: "Test02", c: 1, d: 2, }, { title: "Test02", c: 3, d: 4, }, { title: "Test02", c: 5, d: 6, }, ]; const formatted = items.reduce((carry, current) => { // generating the placeholder format to put the data if(!carry.hasOwnProperty(current.title)) { carry[current.title] = { title: current.title, data: [] }; } // Setting the data in unique name carry[current.title].data.push({ c: current.c, d: current.d }); return carry; }, []); // formatted will have key value pair console.log(Object.values(formatted));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Una función de reducción para acumular el resultado en una matriz:

 const raw = [{ title: 'Test', c: 1, d: 2, }, { title: 'Test', c: 3, d: 4, }, { title: 'Test', c: 5, d: 6, }, { title: 'Test01', c: 1, d: 2, }, { title: 'Test01', c: 3, d: 4, }, { title: 'Test01', c: 5, d: 6, }, { title: 'Test02', c: 1, d: 2, }, { title: 'Test02', c: 3, d: 4, }, { title: 'Test02', c: 5, d: 6, }, ]; const result = raw.reduce((acc, { title, ...data }) => { const index = acc.findIndex((elem) => title === elem.title); if (index === -1) acc.push({ title, data: [data] }); else acc[index].data.push(data); return acc; }, []); 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