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

190
Visualizações
Cómo resumir información de objetos en JavaScript

Estoy tratando de armar un objeto donde se cubrió parte de esta información.

 const tests = [ { id: 1, name: 'taro', designId: 1, designName: 'design1' }, { id: 1, name: 'taro', designId: 2, designName: 'design2' }, { id: 2, name: 'Bob', designId: 3, designName: 'design3' }, { id: 2, name: 'Bob', designId: 4, designName: 'design4' }, ];

Quiero establecer las siguientes expectativas.

 result = [ { id: 1, name: 'taro', designs: [ { designId: 1, designName: 'design1' }, { designId: 2, designName: 'design2' } ] }, { id: 2, name: 'Bob', designs: [ { designId: 3, designName: 'design3' }, { designId: 4, designName: 'design4' } ] } ]

Intenté usar lodash groupby como algo que probé, pero tengo problemas porque no puedo deshacerme de las propiedades adicionales.

 const result = _.chain(tests) .groupBy('id') .map((value, key) => ({ id: key, designs: value })) .value();
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Cuando asigne los grupos, asigne el value y omita la id y el name de cada grupo:

 const tests = [{"id":1,"name":"taro","designId":1,"designName":"design1"},{"id":1,"name":"taro","designId":2,"designName":"design2"}]; const result = _(tests) .groupBy('id') .map((value, id) => ({ id, name: value[0].name, designs: value.map(o => _.omit(o, ['id', 'name'])) })) .value(); console.log(result);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

about 4 years ago · Juan Pablo Isaza Relatório

0

Puedes hacer esto usando reduce y un poco de descomposición de objetos:

 const tests = [ { id: 1, name: 'taro', designId: 1, designName: 'design1' }, { id: 1, name: 'taro', designId: 2, designName: 'design2' }, ]; const result = Object.values(tests.reduce( (acc, {id,name,...rest}) => { if(!acc[id]) acc[id] = {id,name,designs:[]}; acc[id].designs.push( {...rest} ) return acc; },{})) console.log(result);

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede lograr fácilmente el resultado usando for..of loop

 const tests = [ { id: 1, name: "taro", designId: 1, designName: "design1", }, { id: 1, name: "taro", designId: 2, designName: "design2", }, ]; let result = {}; for (let { id, name, ...rest } of tests) { result.id ? result.designs.push(rest) : (result = { id, name, designs: [rest] }); } console.log(result);
 /* This is not a part of answer. It is just to give the output fill height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }

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