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

119
Visualizações
JS: busque y combine objetos similares en una matriz por clave

Tengo una matriz de datos. Necesito encontrar los objetos correspondientes por campo de code y fusionarlos. ¿Cómo se pueden hacer?

 const data = [ { id: 'K1', code: 'KBP', zone: 'zone-k1' }, { id: 'K2', code: 'KBP', zone: 'zone-k2' }, { id: 'H', code: 'HCL', zone: 'zone-h' } ] const expected = [ { id: ['K1', 'K2'], code: 'KBP', zone: ['zone-k1', 'zone-k2'] }, { id: 'H', code: 'HCL', zone: 'zone-h' } ]

Intenté usar lodash uniqBy y groupBy , pero no tuve éxito. Supongo que debe hacerse a través de reducir:

 const res = () => { const similar = data.reduce((item, acc) => { return item.id === acc.id; }) }
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Podría usar Array.prototype.reduce y agrupar los datos por code .

 const data = [ { gateId: 'K1', code: 'KBP', zone: 'zone-k1' }, { gateId: 'K2', code: 'KBP', zone: 'zone-k2' }, { gateId: 'H', code: 'HCL', zone: 'zone-h' } ]; const dataset = data.reduce((acc, curr) => { if (acc[curr.code] === undefined) { acc[curr.code] = { code: curr.code, id: [curr.gateId], zone: [curr.zone], } } else { acc[curr.code].id.push(curr.gateId) acc[curr.code].zone.push(curr.zone) } return acc; }, {}); const res = Object.values(dataset); console.log(res);
 .as-console-wrapper{ min-height: 100vh !important; top: 0}

Por más que puedas ver esta respuesta

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar Array.prototype.reduce y agrupar los objetos por su code .

Nota: Según el OP, para los códigos que solo tienen una identificación única, el campo de id necesita una cadena y no una matriz y esta respuesta se adhiere a eso.

 const data = [ { id: "K1", code: "KBP", zone: "zone-k1" }, { id: "K2", code: "KBP", zone: "zone-k2" }, { id: "K3", code: "KBP", zone: "zone-k3" }, { id: "H", code: "HCL", zone: "zone-h" }, ]; const output = Object.values( data.reduce((o, d) => { const temp = o[d.code]; if (temp) { if (Array.isArray(temp?.id)) { temp.id.push(d.id); temp.zone.push(d.zone); } else { temp.id = [temp.id, d.id]; temp.zone = [temp.zone, d.zone]; } } else { o[d.code] = d; } return o; }, {}) ); console.log(output);

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede agrupar y tomar las propiedades deseadas para los grupos.

 const data = [{ id: 'K1', code: 'KBP', zone: 'zone-k1' }, { id: 'K2', code: 'KBP', zone: 'zone-k2' }, { id: 'H', code: 'HCL', zone: 'zone-h' }], result = _(data) .groupBy('code') .map((items, code) => ({ id: _.map(items, 'id'), code, zone: _.map(items, 'zone'), })) .value(); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>

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