Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

296
Vistas
Máscara de tarjeta de crédito kata en CodeWars - JavaScript

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); }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¿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"
about 4 years ago · Juan Pablo Isaza Denunciar

0

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 error

Cómo funciona

  • Primero, el parámetro cc debe tener una longitud de al menos 4 caracteres (normalmente, puede tener una longitud de 16 caracteres)
  • El '#'.repeat() indica que el carácter # debe repeat -ed.
  • El parámetro enviado a repeat indica cuántas veces. Entonces, cc.length - 4 indica que para cc de 16 caracteres, habrá 12 '#' repetidos
  • El + busca concatenar los '#' repetidos con el operando a su derecha
  • El cc.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.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda