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

125
Visualizações
Javascript fusiona algunas propiedades de 2 matrices

Tengo 2 matrices con objetos dentro de ellas:

 names = [ { "name": "B" }, { "name": "C" }, { "name": "D" }, { "name": "B" }, { "name": "A" } ] sections = [ { "id": 3638, "name": "B", "type": "PANEL", "parentSectionId": 3635, "order": 1, "page": "595" }, { "id": 3658, "name": "C", "type": "PANEL", "parentSectionId": 3635, "order": 2, "page": "595" }, { "id": 3659, "name": "D", "type": "PANEL", "parentSectionId": 3635, "order": 3, "page": "595" }, { "id": 3636, "name": "A", "type": "PANEL", "parentSectionId": 3635, "order": 4, "page": "595" }, { "id": 3661, "name": "B", "type": "PANEL", "parentSectionId": 3635, "order": 5, "page": "595" } ]

Necesito fusionar algunas propiedades de la matriz de secciones dentro de la matriz de nombres. Las propiedades a fusionar son: id y order.

El problema es con la identificación. Debido a que hay un nombre duplicado: 'B', la identificación se está duplicando.

Intenté muchas cosas, pero fallan porque pone el mismo ID 3638 en ambos nombres duplicados: 'B'.

Aquí está el resultado final:

 section {id: 3638, name: 'B', order: 1, size: undefined} section {id: 3658, name: 'C', order: 2, size: undefined} section {id: 3659, name: 'D', order: 3, size: undefined} section {id: 3638, name: 'B', order: 4, size: undefined} section {id: 3636, name: 'A', order: 5, size: undefined}

Y aquí mi último intento de código:

 const childrens = names.map((c, i) => ({ ...c, id: this.sections.find((s) => s.name === c.name).id, order: i + 1, }));
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Creo que ibas en la dirección correcta.

Para una fusión completa, use:

 let children = names.map((name, index) => { return({ order: index +1, name: name.name, ...sections[index] }) })

Para fusión parcial:

 let children = names.map((name, index) => { return({ name: name.name, order: index+1, id: sections[index].id }) })

Creo que no necesitas .find() y solo usas índices

about 4 years ago · Juan Pablo Isaza Relatório

0

Por lo que entendí, este código conservará el orden de los names duplicados (es una versión sin formato para una prueba de concepto)

 merged = [] visited = [] for (let i=0; i<names.length; i++) { for (let j=0; j<sections.length; j++) { if ((names[i].name === sections[j].name) && !visited.find(e => e === sections[j].id) ) { const obj = {...names[i]} obj['order'] = sections[j].order obj['id'] = sections[j].id merged.push(obj) visited.push(sections[j].id) continue } } } console.log(merged)

producción:

 [ { name: 'B', order: 1, id: 3638 }, { name: 'B', order: 5, id: 3661 }, { name: 'C', order: 2, id: 3658 }, { name: 'D', order: 3, id: 3659 }, { name: 'A', order: 4, id: 3636 } ]
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