Necesito su consejo (soy un principiante en JS). Este es mi código:
function fn(pin) { if (pin.length === 4 && !isNaN(pin) && pin % parseInt(pin) === 0 && Number(pin) > 0) { return true; } return false } console.log(fn("123a.78")) // falseEntonces compruebo la longitud, que sea un número, que sea entero y que sea mayor que 0. Pero, ¿cómo debo escribir la condición para eliminar cadenas de este tipo: "12.0" (porque también tiene una longitud de 4 y también es entero)? Si pruebo las condiciones con pin.parseFloat o parseInt, también afectará cadenas como este tipo "1234". O tal vez los escribo de forma incorrecta...
Iría con una expresión regular para validar la entrada. La expresión regular para validar solo 4 dígitos se vería así: /^[0-9]{4}$/
Las expresiones regulares tienen métodos que les permiten probar si las variables son de su tipo. Por ejemplo:
const pin = '1234'; const pin2 = '12.4' const regExp = /^[0-9]{4}$/ regExp.test(pin) //returns truemientras:
regExp.test(pin2) //returns false
Puede usar esta validación como condición en sus condiciones if/else para ejecutar el código que necesita.
tutorial de código libre sobre expresiones regulares https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/#es6
Zona de juegos de expresiones regulares: https://regex101.com/