Tengo dos matrices y cada una de ellas tiene objetos. ¿Cómo puedo simplificar mejor la adición de dos objetos en uno pero en una nueva lista? p.ej
a = [{a:1, b:2, c:3}, {d:1, e:4, f:2}] b = [{m:1, n:2, o:4}, {r:1,s:3,u:5}, {k:1,j:4,f:8}] z = [{a:1, b:2, c:3, m:1, n:2, o:4}, {d:1, e:4, f:2, r:1,s:3,u:5}, {k:1,j:4,f:8}] Supongamos que tiene una lista a y b , quiero agregar los objetos de cada posición en la lista z .
Podría merge los dos objetos de esta manera:
let a = [{a:1, b:2, c:3}, {d:1, e:4, f:2}] let b = [{m:1, n:2, o:4}, {r:1,s:3,u:5}, {k:1,j:4,f:8}] let z = []; b.forEach((x, i) => { let merged = {...x, ...a[i]}; z.push(merged) }) console.log(z);Repasaría la longitud máxima de a y b y usaría Object.assign para copiar los valores. Suponiendo que desea una solución genérica para dos matrices cualquiera, donde cualquiera puede ser más larga que la otra, tenga en cuenta que debe verificar las longitudes a medida que avanza:
z = []; for (let i = 0; i < Math.max(a.length, b.length); ++i) { const result = i < a.length ? a[i] : {}; Object.assign(result, i < b.length ? b[i] : {}); z.push(result); }Prueba esto :
const a = [{a:1, b:2, c:3}, {d:1, e:4, f:2}]; const b = [{m:1, n:2, o:4}, {r:1,s:3,u:5}, {k:1,j:4,f:8}]; let c = []; if(a.length > b.length){ c = a.map((e,i) => { return { ...e, ...b[i] } }); }else{ c = b.map((e,i) => { return { ...e, ...a[i] } }); } console.log(c);