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

97
Vistas
crear un nuevo valor de objeto basado en otra identificación de objeto

Necesito actualizar (o crear una nueva matriz) el valor de identificación en obj1 según el valor de identificación en obj2. ¿Cuál es la mejor manera de hacer esto? Lo intenté con map y reduce pero no tuve éxito. Cualquier ayuda será apreciada.

 const obj1 = [ { id: 1, name: 'foo' }, { id: 2, name: 'bar' } ] const obj2 = { A: { id: 1, externalId:'AAA' }, B: { id: 2, externalId:'BBB' } } outputExpected: [ { id: 'AAA', name: 'foo' }, { id: 'BBB', name: 'bar' } ]
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Dependiendo del tamaño de sus arreglos, puede ser más eficiente construir un Map indexando obj2 ids ( Map(2) { 1 => 'AAA', 2 => 'BBB', ... } ) que se puede usar en el mapeo obj1.

 const obj1 = [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' },]; const obj2 = { A: { id: 1, externalId: 'AAA' }, B: { id: 2, externalId: 'BBB' } }; const map = new Map(Object.values(obj2).map((o) => [o.id, o.externalId])); const result = obj1.map(({ id, ...o }) => ({ id: map.get(id), ...o })); console.log(result);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Sugeriría usar Array.map() , buscando en obj2 una identificación coincidente en cada objeto en obj1, usaríamos Array.find() para obtener el valor correspondiente en obj2.

 const obj1 = [ { id: 1, name: 'foo' }, { id: 2, name: 'bar' } ] const obj2 = { A: { id: 1, externalId:'AAA' }, B: { id: 2, externalId:'BBB' } } const result = obj1.map((obj) => { const match = Object.values(obj2).find(el => el.id === obj.id); return { id: match.externalId, name: obj.name }; }); console.log('Result:', result)
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Array.map funciona. Lea los valores de obj2 como matriz para asignar al resultado esperado. Supongo que las claves de objeto A , B podrían ignorarse.

 const obj1 = [ { id: 1, name: 'foo' }, { id: 2, name: 'bar' } ]; const obj2 = { A: { id: 1, externalId:'AAA' }, B: { id: 2, externalId:'BBB' } }; const result = Object.values(obj2).map(({id, externalId}) => ({ id: externalId, name: obj1.find(item => item.id === id)?.name })); console.log(JSON.stringify(result));

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