javascript - matrices concat con forEach
arrays (4)
¿Qué tal esto?
var array3 = array1.map((a, idx) => [...a, ...array2[idx]] )
Tengo dos matrices que se componen de 20 matrices de objetos. Me gusta esto:
var array1 = [
[
{''x'':0,''y'':0},
{''x'':0,''y'':0}
],
[
{''x'':1,''y'':1},
{''x'':1,''y'':1}
],
...
[
{''x'':19,''y'':19},
{''x'':19,''y'':19}
]
];
var array2 = [
[
{''x'':0,''y'':0},
{''x'':0,''y'':0}
],
[
{''x'':1,''y'':1},
{''x'':1,''y'':1}
],
...
[
{''x'':19,''y'':19},
{''x'':19,''y'':19}
]
];
Quiero que el resultado final sea:
[
[
{''x'':0,''y'':0},
{''x'':0,''y'':0},
{''x'':0,''y'':0},
{''x'':0,''y'':0}
],
...
];
Así que adjunto dos elementos en cada matriz, lo que significa que cada matriz debería contener cuatro objetos ahora.
Lo que probé fue:
var array3 = array1;
array3.forEach(function(item,i) {
item.concat(array2[i])
})
Pero no se agregó nada
Pregunta
¿Existe un enfoque menos minucioso para los artículos de concat de forma iterativa?
Esta es una operación "zip" bastante típica, que se puede lograr usando el
map
.
var array1 = [
[
{''x'':0,''y'':0},
{''x'':0,''y'':0}
],
[
{''x'':1,''y'':1},
{''x'':1,''y'':1}
],
[
{''x'':19,''y'':19},
{''x'':19,''y'':19}
]
];
var array2 = [
[
{''x'':0,''y'':0},
{''x'':0,''y'':0}
],
[
{''x'':1,''y'':1},
{''x'':1,''y'':1}
],
[
{''x'':19,''y'':19},
{''x'':19,''y'':19}
]
];
var result = array1.map( (item,i) => item.concat(array2[i]));
console.log(result);
Si asigna
var array3 = array1
y
array3
, también cambiará
array1
porque ambos hacen referencia a la misma matriz.
Puede
map
la primera matriz y
concat
cada matriz interna en función de la
array2
basada en el índice
const array3 = array1.map((o, i) => o.concat(array2[i]))
o en ES5:
var array3 = array1.map(function(o, i) {
return o.concat(array2[i])
})
const array1=[[{x:0,y:0},{x:0,y:0}],[{x:1,y:1},{x:1,y:1}],[{x:19,y:19},{x:19,y:19}]],
array2=[[{x:0,y:0},{x:0,y:0}],[{x:1,y:1},{x:1,y:1}],[{x:19,y:19},{x:19,y:19}]];
const array3 = array1.map((o, i) => o.concat(array2[i]))
console.log(array3)
Array.concat()
no está mutando la matriz original, lo que significa que crea una nueva instancia de matriz.
Por lo tanto, debe asignar una matriz concatenada al valor original.
var array3 = array1;
// If you don''t want to mutate ''array1, use spread operator like following:
// var array3 = [...array1];
array3.forEach(function(item,i) {
array3[i] = item.concat(array2[i])
})