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

152
Views
Combinar 2 matrices de objetos en función de una clave de objeto específica

Tengo 2 matrices que contienen la misma identificación con un valor diferente (dentro de la selección). Mi objetivo es fusionar ambos para convertirlos en 1 matriz.

Cuando uso un operador de propagación como este:

 data = [ ...data.filter( (a) => a.id === newData.id ), newData];

Vienen los datos siendo anulados

Primera matriz

 [ { id: "A527CFFE", selected: [ { itemId: "A1", text: "Selected 1" } ] } ]

Segunda matriz

 [ { id: "A527CFFE", selected: [ { itemId: "A2", text: "Selected 2" } ] } ]

¿Cómo puedo hacer que ambas matrices se conviertan en 1? el resultado esperado:

 [ { id: "A527CFFE", selected: [ { itemId: "A1", text: "Selected 1" }, { itemId: "A2", text: "Selected 1" } ] } ]

¿Qué estoy haciendo mal en lo anterior?

about 4 years ago · Santiago Gelvez
2 answers
Answer question

0

Puede usar Array.reduce() para combinar las dos matrices en una.

Empezamos concatenando y luego agrupando por id. Para cada elemento con los mismos identificadores, combinamos las matrices selected .

 const arr1 = [ { id: "A527CFFE", selected: [ { itemId: "A1", text: "Selected 1" } ] } ] const arr2 = [ { id: "A527CFFE", selected: [ { itemId: "A2", text: "Selected 2" } ] } ] const result = Object.values([...arr1, ...arr2].reduce((acc, { id, selected }) => { acc[id] = acc[id] || { id, selected: [] }; acc[id].selected = [...acc[id].selected, ...selected]; return acc; }, {})); console.log('Result:', result);
 .as-console-wrapper { max-height: 100% !important; }

about 4 years ago · Santiago Gelvez Report

0

 const arrA=[{id:"A527CFFE",selected:[{itemId:"A1",text:"Selected 1"}]}] const arrB=[{id:"A527CFFE",selected:[{itemId:"A2",text:"Selected 2"}]}] const res = arrA.map(e => { // map all items of first array const found = arrB.find(x => x.id === e.id) // find item in second array with same id return found // check if item has been found in second array ? {id: e.id, selected: [...e.selected, ...found.selected]} // if yes, merged selected : e // if no, return only item from first array }) console.log(res)
 .as-console-wrapper { max-height: 100% !important; top: 0; } /* ignore this */

about 4 years ago · Santiago Gelvez 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!