Investigamos en distintos espacios y así de esta forma brindarte la respuesta a tu inquietud, si continúas con alguna duda puedes dejar la duda y te contestamos sin falta, porque estamos para servirte.
Solución:
Puedes usar Array.prototype.reduce()
en combinación con Array.prototype.forEach()
.
var array = [ [0, 1, 3], [2, 4, 6], [5, 5, 7], [10, 0, 3] ], result = array.reduce(function (r, a) a.forEach(function (b, i) 0) + b; ); return r; , []); document.write('
' + JSON.stringify(result, 0, 4) + '');
Actualizar, un enfoque más corto tomando un mapa para reducir el array.
var array = [[0, 1, 3], [2, 4, 6], [5, 5, 7], [10, 0, 3]], result = array.reduce((r, a) => a.map((b, i) => (r[i] || 0) + b), []); console.log(result);
Usando Lodash 4:
function sum_columns(data) return _.map(_.unzip(data), _.sum); var result = sum_columns([ [1, 2], [4, 8, 16], [32] ]); console.log(JSON.stringify(result));
Para versiones anteriores de Lodash y algunos comentarios
Lodash 4 ha cambiado la forma
_.unzipWith
funciona, ahora el iterado obtiene todos los valores pasados como argumentos de distribución a la vez, por lo que no podemos usar el estilo reductor_.add
más. Con Lodash 3, el siguiente ejemplo funciona bien:function sum_columns(data) return _.unzipWith(data, _.add); var result = sum_columns([ [1, 2], [4, 8, 16], [32], ]); console.log(JSON.stringify(result));
_.unzipWith
insertaráundefined
s donde la fila es más corta que las otras, y_.sum
trata los valores indefinidos como 0. (a partir de Lodash 3)Si sus datos de entrada pueden contener
undefined
ynull
elementos, y desea tratarlos como 0, puede usar esto:function sum_columns_safe(data) return _.map(_.unzip(data), _.sum); function sum_columns(data) return _.unzipWith(data, _.add); console.log(sum_columns_safe([[undefined]])); // [0] console.log(sum_columns([[undefined]])); // [undefined]
Este fragmento funciona con Lodash 3, desafortunadamente no encontré una buena manera de tratar undefined como 0 en Lodash 4, ya que ahora la suma cambia, así que
_.sum([undefined]) === undefined
una línea en
ES6
conmap
yreduce
var a = [ [0, 1, 3], [2, 4, 6], [5, 5, 7], [10, 0, 3] ]; var sum = a[0].map((_, i) => a.reduce((p, _, j) => p + a[j][i], 0)); document.write(sum);
Te mostramos las reseñas y valoraciones de los lectores
Si guardas algún recelo y capacidad de regenerar nuestro escrito te recordamos realizar una apostilla y con deseo lo leeremos.
¡Haz clic para puntuar esta entrada!(Votos: 2 Promedio: 4.5)Utiliza Nuestro Buscador