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

182
Vistas
Usando Array.map en la estructura de objetos anidados en Java Script

Tengo debajo de la estructura del objeto en la matriz

 [ { "modules":set of modules here "details": [ { "name":"abc" "version":"1.2.3" }, { "name":"def" "version":"2.3.4" }, { "name":"ghi" "version":"4.5.6" } ] }, { "modules":set of modules here "details": [ { "name":"jkl" "version":"7.8.9" }, { "name":"mno" "version":"10.11.12" }, { "name":"pqr" "version":"13.14.15" } ] } ]

Lo que quiero hacer es: obtener una matriz de detalles transformada en el siguiente formato para cada objeto raíz en la matriz maestra como

 "details": [ { module:"jkl:7.8.9" }, { module:"mno:10.11.12" }, { module:"pqr:13.14.15" } ]

Entonces la matriz final sería:

 [ { "modules":set of modules here "details": [ { "module":"abc:1.2.3" }, { "module":"def:2.3.4" }, { "module":"ghi:4.5.6" } ] }, { "modules":set of modules here "details": [ { "module":"jkl:7.8.9" }, { "module":"mno:10.11.12" }, { "module":"pqr:13.14.15" } ] } ]

Lo que he probado y funciona es:

 rootArray.forEach((entry)=> { let line = entry.details.map((detailEntry)=>{ //merge detailEntry into single line }) entry.details = line });

Mi pregunta es: ¿es este un enfoque correcto o hay alguna solución mejor disponible?

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

0

 const data = [ { "modules": "set of modules here", "details": [ { "name":"abc", "version":"1.2.3" }, { "name":"def", "version":"2.3.4" }, { "name":"ghi", "version":"4.5.6" } ] }, { "modules": "set of modules here", "details": [ { "name":"jkl", "version":"7.8.9" }, { "name":"mno", "version":"10.11.12" }, { "name":"pqr", "version":"13.14.15" } ] } ] const result = data.map( item => ({modules: item.modules, details: item.details.map(i => { return { module: `${i["name"]}:${i["version"]}` } })})) console.log(result)

about 4 years ago · Juan Pablo Isaza Denunciar

0

su enfoque parece correcto.

hay otra forma de lograr la estructura esperada, pero haciendo la copia de la matriz inicial en lugar de modificar la existente.

 const result = rootArray.map(({ details, ...rest }) => ({ details: details.map(/*transform*/), ...rest ));
about 4 years ago · Juan Pablo Isaza Denunciar

0

Dos map es probablemente el enfoque correcto. Devolverá una nueva matriz en lugar de mutar la matriz original.

map sobre la matriz de datos principal y luego asigne el resultado de mapear sobre details a la propiedad de details del objeto que está devolviendo en cada iteración.

 const data=[{modules:"set of modules here",details:[{name:"abc",version:"1.2.3"},{name:"def",version:"2.3.4"},{name:"ghi",version:"4.5.6"}]},{modules:"set of modules here",details:[{name:"jkl",version:"7.8.9"},{name:"mno",version:"10.11.12"},{name:"pqr",version:"13.14.15"}]}]; const out = data.map(obj => { return { modules: obj.modules, details: obj.details.map(detail => { const { name, version } = detail; return { module: `${name}:${version}` }; }) }; }); console.log(out);

Documentación adicional

  • Asignación de desestructuración

  • map

  • Plantilla/literales de cadena

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