Tengo dos matrices multidimensionales que necesito fusionar en una nueva matriz múltiple. He visto algunas otras preguntas similares aquí, pero no he encontrado una que satisfaga mis necesidades.

Ejemplo:

var array1 = [[ 4.242, 'ORTIa', 5.16 ],
  [ 4.016, 'RAIL', 25.9 ],
  [ 4.013, 'BILIa', 93.3 ]]

var array2 = [[ -2.9491, 'MSABb', 36.2 ],
  [ -2.9046, 'EMPIRb', 11.7 ],
  [ -2.8286, 'EDGE', 5.84 ]]

Necesito que la salida se vea así:

[[ 4.242, 'ORTIa', 5.16, -2.9491, 'MSABb', 36.2 ],
  [ 4.016, 'RAIL', 25.9, -2.9046, 'EMPIRb', 11.7 ],
  [ 4.013, 'BILIa', 93.3, -2.8286, 'EDGE', 5.84 ]]

Alguna idea de como resolver esto? ¡Gracias!

-1
Pierre 28 oct. 2019 a las 16:35

3 respuestas

La mejor respuesta

Puede usar map en una de las matrices y en la devolución de llamada esperar un índice también, luego simplemente concatenar cada lista con la lista en la misma index en la otra matriz.

El código debería tener el siguiente aspecto:

let array3 = array1.map((list, index) => list.concat(array2[index]));
console.log(array3);

//array3 will have the expected result as mentioned in your question.
2
Jazib 28 oct. 2019 a las 13:55

Solución ingenua:


var array1 = [[ 4.242, 'ORTIa', 5.16 ],
  [ 4.016, 'RAIL', 25.9 ],
  [ 4.013, 'BILIa', 93.3 ]];

var array2 = [[ -2.9491, 'MSABb', 36.2 ],
  [ -2.9046, 'EMPIRb', 11.7 ],
  [ -2.8286, 'EDGE', 5.84 ]];

var array3 = [];

for( var  i = 0; i < array1.length; i++ )
{
  array3[ i ] = array1[ i ].concat( array2[ i ] );
}

console.log(array1);
console.log(array2);
console.log(array3);
1
Mär 28 oct. 2019 a las 13:44

Map te lo pone fácil.

var array1 = [[ 4.242, 'ORTIa', 5.16 ],
  [ 4.016, 'RAIL', 25.9 ],
  [ 4.013, 'BILIa', 93.3 ]]

var array2 = [[ -2.9491, 'MSABb', 36.2 ],
  [ -2.9046, 'EMPIRb', 11.7 ],
  [ -2.8286, 'EDGE', 5.84 ]]
 var result = array1.map((row, index) => row.concat(array2[index]))

 console.log(result)
0
Dieu Linh 28 oct. 2019 a las 14:04