Mi código funciona para alguna entrada pero para una entrada como esta: ('Esto'+ 'pintura'+ '1845 y 1910') me sale un error: AssertionError 7 == 8. Puedo resolverlo usando expresiones regulares pero no lo hago No sé lo que estoy haciendo mal en esto. Gracias por responder.
import assert from "assert"; function countDigits(text){ let num = text.split(''); let sum = 0; for (let i=0; i<num.length; i++){ if (Number(num[i])) { sum += 1;}} return sum } assert.equal(countDigits('This' + 'painting' + '1845 and 1910'), 8);Number(num[i]) incluirá la conversión "0" a un número, pero en la condición if de Javascript, será falso
if(Number("0")) { console.log('true') //you're expecting this because it's a number } else { console.log('false') //but in fact, it returns this because 0 is falsy } En ese caso, te sugiero que uses isNaN(num[i])
function countDigits(text) { let num = text.split(''); let sum = 0; for (let i = 0; i < num.length; i++) { //num[i] = " " will be considered a number, so we need to check it as well if (num[i] !== " " && !isNaN(num[i])) { sum += 1; } } return sum } console.log(countDigits('This' + 'painting' + '1845 and 1910'))