Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

198
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda