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

249
Visualizações
JS: fusiona 2 matrices según las propiedades

Estoy tratando de fusionar 2 matrices de objetos donde la matriz resultante debería tener solo objetos presentes en la matriz 1 (nombres seleccionados) pero con una propiedad de los objetos correspondientes de la matriz 2 (nombreDetalles). Hay una propiedad coincidente (única) para que coincida con ellos:

 const selectedNames = [ { id: '11' name: 'joe', }, { id: '22', name: 'bill', }, ]; const nameDetails = [ { nameId: '11', salary: '23422', location: 'New Jersey', }, { nameId: '33', salary: '23424', location: 'New York', }, { nameId: '22', salary: '99999', location: 'Boston', }, { nameId: '44', salary: '323232', location: 'Chicago', }, ];

La propiedad coincidente es selectedNames.id === nameDetails.nameId. Todas las entradas en selectedNames definitivamente estarán presentes en nameDetails (pero no al revés). La matriz resultante debería verse así:

 [ { id: '11', name: 'joe', salary: '23422', }, { id: '22', name: 'bill', salary: '99999' } ]

Estoy un poco confundido. Sé que probablemente consistirá en .includes() y filter() y... ¿para fusionar? No estoy seguro de cómo manejarlo.

Alternativamente, lo que probablemente será mucho más fácil, filtre la matriz nameDetails para tener solo objetos con nameId que existe (como id) en selectedNames.

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

0

Estoy un poco confundido por el resultado de tu ejemplo. Por ejemplo, ¿de dónde viene id: '11111' ?

¿Estás buscando algo como esto tal vez?

 const selectedNames = [ { id: '11', name: 'joe', }, { id: '22', name: 'bill', }, ]; const nameDetails = [ { nameId: '11', salary: '23422', location: 'New Jersey', }, { nameId: '33', salary: '23424', location: 'New York', }, { nameId: '22', salary: '99999', location: 'Boston', }, { nameId: '44', salary: '323232', location: 'Chicago', }, ]; const merged = selectedNames.map(n => { n.salary = nameDetails.filter(d => n.id === d.nameId)[0].salary; return n; }); console.log(merged)

Nota: Esto cambiará los Nombres selectedNames originales agregando el salary de la entrada correspondiente en nameDetails del nombre.

about 4 years ago · Juan Pablo Isaza Relatório

0

Tal vez esto se ajuste a tus necesidades:

 selectedNames.map(({ id, name }) => { let salary = nameDetails.find((nameItem) => nameItem.nameId === id).salary; return { id, name, salary }; })

Resultará en:

 [ { id: '11', name: 'joe', salary: '23422', }, { id: '22', name: 'bill', salary: '99999', } ]
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