Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

243
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda