Creé el siguiente código porque obtengo valores de una entrada que solo acepta números y espacios, y quiero convertir y agregar cada número de la entrada sin tener en cuenta los espacios:
// variable textArea is the value from the input let textArea = document.getElementById("numVal").value; let regex = /^[0-9\s]*$/; if(regex.test(textArea) == true) { let val = Number(textArea) //Used this to convert the string into integer res1.innerHTML = textArea; } // The function that add all numbers is still lacking. Los números se recopilan, pero cuando agrego un espacio, muestra NaN . Entonces, por ejemplo, si textArea es 10 , entonces mostrará 10 , pero cuando textArea sea 10 (con espacio), mostrará NaN
Haga coincidir todos los dígitos para obtener una matriz de cadenas de dígitos, luego convierta cada cadena en un número y súmelas.
const { value } = document.getElementById("numVal"); if (/^[\d\s]*$/.test(value)) { const total = (value.match(/\d+/g) || []) .map(Number) .reduce((a, b) => a + b, 0); res1.textContent = total; }En cuanto a la interfaz de usuario, podría ser mejor evitar que se ingresen caracteres que no sean dígitos ni espacios, en lugar de fallar al calcular cuando se encuentran caracteres inesperados.