Estas son las instrucciones para el kata en el que estoy trabajando:
Por lo general, cuando compra algo, se le pregunta si su número de tarjeta de crédito, número de teléfono o la respuesta a su pregunta más secreta sigue siendo correcta. Sin embargo, dado que alguien podría mirar por encima de su hombro, no desea que eso se muestre en su pantalla. En cambio, lo enmascaramos.
Su tarea es escribir una función maskify, que cambia todos menos los últimos cuatro caracteres en '#'.
Me cuesta entender por qué este código puede imprimir la respuesta correcta
let maskify = cc => console.log('#'.repeat(cc.length - 4) + cc.substr(-4));Pero el siguiente código solo devuelve "RangeError: valor de recuento no válido en String.repeat ()"
let maskify = cc => { return '#'.repeat(cc.length - 4) + cc.substr(-4); }¿Cómo estás ejecutando tu función? Ejecuté su función en repl.it con una entrada de muestra y funciona bien.
let maskify = cc => { return '#'.repeat(cc.length - 4) + cc.substr(-4); } console.log(maskify("abcdefghijklmnop")); //logs "############mnop"Ambos fragmentos de código producen los mismos resultados. Si la longitud del parámetro es inferior a 4, se producirá un error.
let maskify = cc => console.log('#'.repeat(cc.length - 4) + cc.substr(-4)); maskify('1234123456785678'); // Masks first 12 digits maskify('12341'); // Masks first digit maskify('123'); // Invalid count value error let maskify = cc => { return '#'.repeat(cc.length - 4) + cc.substr(-4); }; // Same results as previous code console.log(maskify('1234123456785678')); // Masks first 12 digits console.log(maskify('12341')); // Masks first digit console.log(maskify('123')); // Invalid count errorCómo funciona
cc debe tener una longitud de al menos 4 caracteres (normalmente, puede tener una longitud de 16 caracteres)'#'.repeat() indica que el carácter # debe repeat -ed.repeat indica cuántas veces. Entonces, cc.length - 4 indica que para cc de 16 caracteres, habrá 12 '#' repetidos+ busca concatenar los '#' repetidos con el operando a su derechacc.substr(-4) extrae los últimos 4 caracteres de cc (& este es el operando en el lado derecho de + para la concatenación). Ambos fragmentos siguen la misma lógica. El primero inicia sesión en la console ; mientras que el segundo devuelve la cadena.