Quiero eliminar caracteres especiales y letras de una matriz y calcular la suma de los números enteros restantes en la matriz, en JavaScript.
const arr = ["13,d42", "d44f2", "1g5", "1c42"]; let numbersOnly = (val) => { if (typeof val === "number") { // replace number with string to get only string values in an array. return val; } else { let temp = val.split(""); // document.write(temp); let newArr = []; for (let i = 0; i < temp.length; i++) { if (typeof temp[i].parseInt() === 'number') { document.write(i) newArr.push(temp[i]); } } // return newArr; // document.write(newArr) } }; let numbers = arr.map(numbersOnly).reduce((partialSum, a) => partialSum + a, 0); document.write(numbers);reduce sobre la matriz. Para cada cadena, encuentre los números usando la match con una expresión regular simple, luego join esa matriz en una cadena y luego coaccione a un número.
const arr = ['13,d42', 'd44f2', '1g5', '1c42']; const sum = arr.reduce((sum, str) => { const num = Number(str.match(/\d/g).join('')); return sum + num; }, 0); console.log(sum); Nota al margen: probablemente no deberías usar document.write :
⚠ Advertencia:Se desaconseja enfáticamente el uso del método
document.write().
1941 es la respuesta correcta. porque "13,d42" es el primer elemento de la matriz. devuelve 1342
const arr = ["13,d42", "d44f2", "1g5", "1c42"]; console.log(arr.map(a => +a.match(/\d+/g).join('')).reduce((a, b) => a + b, 0)); // 1941 => the sum of [ 1342, 442, 15, 142 ]¿Puede esto ayudarte?
const arr = ["13,d42", "d44f2", "1g5", "1c42"]; const onlyNumbers = arr .map((value) => value.replace(/[^0-9]/g, "")) // get just numbers .reduce((pv, cv) => parseInt(pv) + parseInt(cv)); // add up the numbers console.log(onlyNumbers);