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

106
Vistas
Inserte todas las propiedades de un objeto dentro de una matriz a otro objeto en la matriz usando JS/TS

He estado buscando una forma sencilla de copiar/insertar/mover propiedades en un objeto dentro de una matriz a otro objeto. Se me ocurrió una lógica básica que hace el trabajo a la perfección, pero no estoy satisfecho con esto. Tiene que haber una mejor manera, ¿alguna ayuda aquí?

 var first = [ { "AGREE_EFF_DATE__0": "02-Aug-2018", "AGREE_TERM_DATE__0": "30-Apr-2021", "AGREE_IND__0": "P1", "P_DBAR_IND__0": "N", "AGREE_EFF_DATE__1": "01-May-2021", "AGREE_TERM_DATE__1": null, "AGREE_IND__1": "NP", "P_DBAR_IND__1": "N", "PROVIDER_SPECIALITY__0": "PSYCHOLOGY, CLINICAL", "PROVIDER_SPECIALITY_CODE__0": "CK" } ]; var second = [ { "STATUS": "ACTIVE", "MEDICARE_NUMBER" : 12345 } ]; for(let i = 0; i < second.length; i++) { var first_keys = Object.keys(first[i]); var first_values = Object.values(first[i]); for(let j = 0; j < first_keys.length; j++) { second[i][first_keys[j]] = first_values[j]; } } console.log(second); //Output- [ { STATUS: 'ACTIVE', MEDICARE_NUMBER: 12345, AGREE_EFF_DATE__0: '02-Aug-2018', AGREE_TERM_DATE__0: '30-Apr-2021', AGREE_IND__0: 'P1', P_DBAR_IND__0: 'N', AGREE_EFF_DATE__1: '01-May-2021', AGREE_TERM_DATE__1: null, AGREE_IND__1: 'NP', P_DBAR_IND__1: 'N', PROVIDER_SPECIALITY__0: 'PSYCHOLOGY, CLINICAL', PROVIDER_SPECIALITY_CODE__0: 'CK' } ]
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Cuando sea posible, debe preferir la iteración a los bucles indexados manualmente. Esto significa arr.map() o arr.forEach() o arr.reduce() , por nombrar algunos.

Además, puede usar una extensión de objetos para fusionar objetos fácilmente.

Poniéndolos juntos, puede reducir esta lógica a:

 const result = first.map((firstObj, i) => ({ ...firstObj, ...second[i] }))

Aquí map() sobre todos los miembros de first , lo que devuelve una nueva matriz donde cada miembro es el resultado de la función. Esta función toma el miembro de la matriz como primer argumento y el índice de ese miembro como segundo argumento. Entonces podemos usar ese índice para encontrar el elemento correspondiente en la segunda matriz.

Luego, simplemente extiende ambos objetos en un nuevo objeto para ensamblar el resultado final.

 var first = [ { a: 1, b: 2 }, { a: 4, b: 5 }, ]; var second = [ { c: 3 }, { c: 6 }, ]; const result = first.map((firstObj, i) => ({ ...firstObj, ...second[i] })) console.log(result)

Lo cual también es mecanografiado perfectamente válido .


NOTA: hay una diferencia entre mi código y el tuyo. Su código modifica los objetos en second . Mi código devuelve nuevos objetos y no cambia el contenido del second en absoluto.

Por lo general, esta es la mejor opción, pero depende de cómo use este valor y cómo se espera que fluyan los datos en su programa.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe tener cuidado con la iteración, ya que puede tener diferentes recuentos de elementos en la primera y segunda matriz. Entonces la posible solución será así:

 const first = [ { "AGREE_EFF_DATE__0": "02-Aug-2018", "AGREE_TERM_DATE__0": "30-Apr-2021", "AGREE_IND__0": "P1", "P_DBAR_IND__0": "N", "AGREE_EFF_DATE__1": "01-May-2021", "AGREE_TERM_DATE__1": null, "AGREE_IND__1": "NP", "P_DBAR_IND__1": "N", "PROVIDER_SPECIALITY__0": "PSYCHOLOGY, CLINICAL", "PROVIDER_SPECIALITY_CODE__0": "CK" } ]; const second = [ { "STATUS": "ACTIVE", "MEDICARE_NUMBER": 12345 } ]; console.log(mergeAll(first, second)); function mergeAll(firstArray, secondArray) { const result = []; const minLength = firstArray.length < secondArray.length ? firstArray.length : secondArray.length; for (let i = 0; i < minLength; i++) { result.push({...firstArray[i], ...secondArray[i]}); } return 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