Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

110
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!