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

114
Vistas
For loop se detiene cuando se agrega el resto del bloque

Escribí un bucle for simple, para comprender mejor charCodeAt() y fromCharCode() y para resolver el proyecto odin, el ejercicio de cifrado César donde tienes que escribir la función para codificar una cadena.

Se detiene en la primera iteración y no sé por qué. Cuando registro en la consola str.charCodeAt(i), se repite, pero cuando agrego el resto de la función, se detiene.

 function uniCode(str, num) { for(let i = 0; i < str.length;i++) { //console.log(str.charCodeAt(i) + num); let charCode = str.charCodeAt(i) + num; let newStr = String.fromCharCode(charCode); return newStr; } } uniCode("Help!", 3); 'K'

¡Me alegro de cualquier ayuda!

¡Gracias!

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

con su código, recorre todos los caracteres de una cadena dada en el parámetro

pero tienes return newStr; en el ciclo detendrá la iteración del ciclo

 function uniCode(str, num) { var newStr = ""; for(let i = 0; i < str.length;i++) { console.log(str.charCodeAt(i) + num); let charCode = str.charCodeAt(i); newStr += String.fromCharCode(charCode); } console.log(newStr); return newStr; } uniCode("Help!", 3);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Se detiene porque usted se lo ha indicado, utilizando return newStr; , que finaliza inmediatamente la función y devuelve newStr .

Para lo que está haciendo, desea construir la nueva cadena y luego devolverla al final:

 function uniCode(str, num) { let newStr = ""; for (let i = 0; i < str.length; i++) { let charCode = str.charCodeAt(i) + num; let newChar = String.fromCharCode(charCode); newStr += newChar; } return newStr; }

Ejemplo en vivo:

 function uniCode(str, num) { let newStr = ""; for (let i = 0; i < str.length; i++) { let charCode = str.charCodeAt(i) + num; let newChar = String.fromCharCode(charCode); newStr += newChar; } return newStr; } console.log(uniCode("Help!", 3)); // "Khos$"

Sin embargo, tenga en cuenta que cuando recorre una cadena como esa, está trabajando en unidades de código , no en puntos de código, lo que puede hacer que sus resultados sean bastante extraños si hay puntos de código que requieren múltiples unidades de código para procesar. (Consulte la publicación de mi blog aquí si estos términos no le son familiares). Es posible que desee usar for-of en su lugar, ya que funciona en puntos de código:

 function uniCode(str, num) { let newStr = ""; for (const char of str) { const codePointValue = char.codePointAt(0) + num; const newChar = String.fromCodePoint(codePointValue); newStr += newChar; } return newStr; }

Ejemplo en vivo:

 function uniCode(str, num) { let newStr = ""; for (const char of str) { const codePointValue = char.codePointAt(0) + num; const newChar = String.fromCodePoint(codePointValue); newStr += newChar; } return newStr; } function oldUniCode(str, num) { let newStr = ""; for (let i = 0; i < str.length; i++) { let charCode = str.charCodeAt(i) + num; let newChar = String.fromCharCode(charCode); newStr += newChar; } return newStr; } console.log("New: " + uniCode("Help!😀", 3)); // "New: Khos$😃" console.log("Old: " + oldUniCode("Help!😀", 3)); // "Old: Khos$𠈃"

about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema aquí es la declaración de return al final del ciclo que causa el problema.

Puede crear una variable y newStr y, después del ciclo, devolver el valor de la cadena

 function uniCode(str, num) { let finalStr = "" for(let i = 0; i < str.length;i++) { let charCode = str.charCodeAt(i) + num; let newStr = String.fromCharCode(charCode); finalStr = finalStr + newStr; } return finalStr } uniCode("Help!", 3); 'Khos$'

Puede mejorar el código utilizando la función de reduce como:

 function uniCode(str, num) { return str .split('') .map(x=>x.charCodeAt(0)) .reduce((total, curr) => (total + String.fromCharCode(curr + num)), "") }
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