Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

175
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!