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

187
Vistas
¿Cómo aplanar una matriz de objetos?

Tengo algunos datos en un formato no deseado y me gustaría aplanarlos.

Datos:

 [ { team: "Team 1", name: "John" }, { team: "Team 1", name: "Stacy" }, { team: "Team 1", name: "Jason" }, { team: "Team 2", name: "Tim" }, { team: "Team 2", name: "Andrew" }, { team: "Team 2", name: "Steve" } , { team: "Team 3", name: "Eric" }, { team: "Team 3", name: "Frank" }, { team: "Team 3", name: "Cory" } ]

El resultado deseado es:

 [ { team: "Team 1", name: ["John", "Stacy", "Jason"], count: 3 }, { team: "Team 2", name: ["Tim", "Andrew", "Steve"], count: 3 }, { team: "Team 3", name: ["Eric", "Frank", "Cory"], count: 3 } ]

Intenté recorrerlo y usar Object.assing pero ese parecía ser el enfoque incorrecto. ¿Alguna sugerencia sobre un buen enfoque para aplanar estos datos? Gracias

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

0

Puedes usar Array.reduce .

En la función de reducción, verifique si el acumulador contiene un elemento con la misma propiedad de team . Si es así, incremente su propiedad de count y empuje la propiedad de name del elemento actual a su propiedad de name .

 const arr=[{team:"Team 1",name:"John"},{team:"Team 1",name:"Stacy"},{team:"Team 1",name:"Jason"},{team:"Team 2",name:"Tim"},{team:"Team 2",name:"Andrew"},{team:"Team 2",name:"Steve"},{team:"Team 3",name:"Eric"},{team:"Team 3",name:"Frank"},{team:"Team 3",name:"Cory"}]; const res = arr.reduce((a,b) => { let itm = a.find(e => e.team == b.team); if(itm){ itm.count++; itm.name.push(b.name); }else{ a.push({team: b.team, name: [b.name], count:1}) } return a; }, []) console.log(res)

Una solución más eficiente:

 const arr=[{team:"Team 1",name:"John"},{team:"Team 1",name:"Stacy"},{team:"Team 1",name:"Jason"},{team:"Team 2",name:"Tim"},{team:"Team 2",name:"Andrew"},{team:"Team 2",name:"Steve"},{team:"Team 3",name:"Eric"},{team:"Team 3",name:"Frank"},{team:"Team 3",name:"Cory"}]; const obj = arr.reduce((a,b) => { let itm = a[b.team] if(itm){ itm.count++; itm.name.push(b.name); }else{ a[b.team] = {team: b.team, name: [b.name], count: 0} } return a; }, {}) const res = Object.keys(obj).map(e => obj[e]) console.log(res)

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