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

96
Visualizações
Javascript fusiona objetos con la misma propiedad

Tengo una serie de objetos como este:

 const arr = [ {"id" : 1, "name" : "john", "age": 12, "fruits": "banana"}, {"id" : 2, "name" : "john", "age": 12, "fruits": "apple"} {"id" : 3, "name" : "maria", "age": 13, "fruits": "grappes"} {"id" : 4, "name" : "maria", "age": 13, "fruits": "blackberry"} {"id" : 5, "name" : "camille", "age": 12, "fruits": "cherry"} ]

Me gustaría tener un solo objeto para cada persona (nombre) y agregar sus objetos.

Entonces la matriz final sería:

 const arr = [ {"id" : 1, "name" : "john", "age": 12, "fruits": ["banana", "apple"]}, {"id" : 3, "name" : "maria", "age": 13, "fruits": ["grappes", "blackberry"]} {"id" : 5, "name" : "camille", "age": 12, "fruits": ["cherry"]} ];

La matriz real que estoy usando es muy grande, es por eso que estoy buscando la forma más eficiente de hacerlo.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puede usar Array.prototype.reduce para agrupar los objetos.

 const arr = [ { id: 1, name: "john", age: 12, fruits: "banana" }, { id: 2, name: "john", age: 12, fruits: "apple" }, { id: 3, name: "maria", age: 13, fruits: "grappes" }, { id: 4, name: "maria", age: 13, fruits: "blackberry" }, { id: 5, name: "camille", age: 12, fruits: "cherry" }, ]; const output = Object.values( arr.reduce((res, o) => { if (!res[o.name]) { res[o.name] = { ...o, fruits: [] }; } res[o.name].fruits.push(o.fruits); return res; }, {}) ); console.log(output);

También puede escribir la solución anterior de manera más sucinta:

 const arr = [ { id: 1, name: "john", age: 12, fruits: "banana" }, { id: 2, name: "john", age: 12, fruits: "apple" }, { id: 3, name: "maria", age: 13, fruits: "grappes" }, { id: 4, name: "maria", age: 13, fruits: "blackberry" }, { id: 5, name: "camille", age: 12, fruits: "cherry" }, ]; const output = Object.values( arr.reduce( (res, o) => ((res[o.name] ||= { ...o, fruits: [] }).fruits.push(o.fruits), res), {} ) ); console.log(output);

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