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

157
Visualizações
Cómo fusionar en un reductor dos objetos en uno fusionando también un subarchivo que es una matriz

Tengo el siguiente fragmento que usa una reduce y no puedo usar otro tipo de bucles, tengo como requisito resolver esto mediante una reduce o una forma que no incluya un bucle como for o forEach

CódigoSandbox

Como verá, tengo una matriz de objetos y, dentro de ella, tengo 2 objetos con el mismo studyId .

Lo que necesito es fusionar los objetos con el mismo studyId de estudio y los ID de sitio del siteIds en una matriz para obtener el siguiente resultado

 { studyId: "ANNO5", siteIds: ["Paris", "Bon", "PLACEHOLDER", "Amsterdam", "Bruxelles" ] }

Los siteIds de sitio también deben ser únicos. No puedo haber repetido el mismo siteId de sitio en la matriz.

En el fragmento, probé con el reductor ya que lo tengo como requisito, pero no puedo encontrar la manera de lograr el resultado que necesito.

Incluyendo el resultado deseado completo, ya que confundía un supercomentario

 [ // Here the merged with the same StudyId { studyId: "ANNO5", siteIds: ["Paris", "Bon", "PLACEHOLDER", "Amsterdam", "Bruxelles", "Paris"] }, { studyId: "ANNO6", siteIds: ["Rome", "Torino", "PLACEHOLDER", "Milano"] }, { studyId: "ANNO7", siteIds: undefined }, { studyId: "ANNO8", siteIds: undefined } ];

según undefined , el requisito es similar a tener algo como esto

 siteIds: isEmpty(siteIds) ? undefined : uniq(siteIds),

Cuando no hay siteIds , no tenemos definido según el ejemplo anterior

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

0

Puede agrupar los datos por studyId de estudio usando reduce y usar Establecer para eliminar los siteIds de sitio duplicados.

 const siteIds = [ { studyId: "ANNO5", siteIds: ["Paris", "Bon", "PLACEHOLDER"] }, { studyId: "ANNO5", siteIds: ["Amsterdam", "Bruxelles", "PLACEHOLDER", "Paris"] }, { studyId: "ANNO6", siteIds: ["Rome", "Torino", "PLACEHOLDER", "Milano"] }, { studyId: "ANNO7", siteIds: undefined }, { studyId: "ANNO8", siteIds: undefined }, ]; const result = Object.values( siteIds.reduce((r, o) => { if (!r[o.studyId]) { r[o.studyId] = { ...o, siteIds: undefined }; } if (o.siteIds) { (r[o.studyId].siteIds ??= []).push(...o.siteIds); r[o.studyId].siteIds = [...new Set(r[o.studyId].siteIds)]; } return r; }, {}) ); console.log(result);

Si desea evitar la creación de conjuntos en cada iteración, consulte el fragmento a continuación:

 const siteIds = [ { studyId: "ANNO5", siteIds: ["Paris", "Bon", "PLACEHOLDER"] }, { studyId: "ANNO5", siteIds: ["Amsterdam", "Bruxelles", "PLACEHOLDER", "Paris"] }, { studyId: "ANNO6", siteIds: ["Rome", "Torino", "PLACEHOLDER", "Milano"] }, { studyId: "ANNO7", siteIds: undefined }, { studyId: "ANNO8", siteIds: undefined }, ]; const result = Object.values( siteIds.reduce((r, o) => { if (!r[o.studyId]) { r[o.studyId] = { ...o, siteIds: undefined }; } if (o.siteIds) { (r[o.studyId].siteIds ??= []).push(...o.siteIds); } return r; }, {}) ).map((o) => ({ ...o, ...(o.siteIds && { siteIds: [...new Set(o.siteIds)] }), })); console.log(result);

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