Estaba pensando en una forma de hacer una suma de matriz sin tener que usar bucles y me doy cuenta de que usar Array.prototype.map() es una buena manera.
var multArray = [[1,2,3,4,5],[6,7,8,9,10]]; var multArray2=[[1,2,3,4,5],[6,7,8,9,10]]; total = multArray.map((array, arrayIndex) => array.map((value, index) => value + multArray2[arrayIndex][index])); console.log(total);¿Sabes si hay un camino mejor o más corto?
¡Gracias!.
"Mejor" es subjetivo, pero puedes hacer algo como esto:
var multArray = [[1,2,3,4,5],[6,7,8,9,10]]; var multArray2=[[1,2,3,4,5],[6,7,8,9,10]]; console.log( [...Array(multArray.length).keys()].map( f => [...Array(multArray[f].length).keys()].map( s => multArray[f][s] + multArray2[f][s] ) ) )Pero en mi opinión, el tuyo es más legible
Creo que un ciclo for simple es el más explícito en términos de mostrar claramente lo que está sucediendo.
const multArray = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10],]; const multArray2 = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10],]; const total = []; for (let i = 0; i < multArray.length; i++) { total[i] = []; for (let j = 0; j < multArray[i].length; j++) { total[i][j] = multArray[i][j] + multArray2[i][j]; } } console.log(total);Pero si realmente no quiere, puede definir algunas funciones de utilidad y encadenarlas.
const multArray = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10],]; const multArray2 = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10],]; const zip = (a, b) => a.map((k, i) => [k, b[i]]); const sum = (arr) => arr.reduce((a, b) => a + b, 0); const total = zip(multArray, multArray2).map((c) => zip(...c).map(sum)); console.log(total); Se puede obtener una ventaja real al redefinir la función zip() para aceptar cualquier cantidad de parámetros y, por lo tanto, permitirle totalizar cualquier cantidad de matrices simplemente pasándolas todas a la llamada zip inicial (y evitando escribir explícitamente bucles anidados para cada matriz adicional ).
const multArray = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10],]; const multArray2 = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10],]; const multArray3 = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10],]; const zip = (...rows) => [...rows[0].keys()].map((k) => rows.map((row) => row[k])); const sum = (arr) => arr.reduce((a, b) => a + b, 0); const sum_mult_arrays = (...arrs) => zip(...arrs).map((c) => zip(...c).map(sum)); const total = sum_mult_arrays(multArray, multArray2, multArray3); console.log(total);Veael equivalente de Javascript de la función zip de Python para una gran discusión sobre el comprimir.