Tengo una pregunta muy simple, estoy aprendiendo javascript.
Tengo esta matriz 2D: -
let text = [[1,a],[2,b]]
Y quiero sumar los valores numéricos de la matriz, sé cómo hacerlo usando for loop, pero ¿hay alguna forma de hacerlo de manera más corta, como podemos hacerlo usando una matriz 1D usando reduce
?
Si tengo esta matriz: -
let text = [1,2]
Puedo resumirlo fácilmente en una línea como esta: -
text.reduce((a,b) => a + b)
¿Hay alguna forma de hacerlo de la misma manera con una matriz 2d que también tiene valores de cadena?
Gracias
Puede usar ese mismo Array.prototype.reduce()
ligeramente modificado para crear una función de resumen personalizada que puede aceptar la matriz de origen y la variable col
que indica la columna de destino:
const src = [[1,'a'],[2,'b']] const sumByCol = (arr, col) => arr.reduce((acc, row) => acc + row[col], 0) console.log(sumByCol(src,0))
Podrías hacer lo siguiente
let text = [[1,'a'],[2,'b']] let numbers_only = text.flat().filter(x => Number(x)) let sum = numbers_only.reduce((a,b) => a + b) //answer = 3
Como una sola línea -
let sum = text.flat().filter(x => Number(x)).reduce((a,b) => a + b)
Puede lograrlo en una sola línea haciendo esto :
let text = [[1,'a'],[2,'b']] console.log( text.flat() .filter((item) => typeof item === 'number') .reduce((total, item) => total + item) )