for (let i = 0; i < ans.length; i++) { ans = ans.replace(' ', '+'); ans = ans.replace(' ', '+'); ans = ans.replace('++', '+'); //here ans is a value of an input. }¿Por qué se detiene antes de completar el proceso?
Bueno, según el código, veo que quieres deshacerte de los espacios sin importar cuántos en una fila, así que sugiero Regular Expression :
let ans = "im an input here so you can see the stuff" ans = ans.replace(/\s+/g , '+'); \* im+an+input+here+so+you+can+see+the+stuff *\ Sin embargo, como se ha dicho en Wais Kamal Answer , también puede usar replaceAll() para diferentes casos
Está realizando la misma acción en cada iteración del ciclo, por lo que el ciclo es redundante en este bloque de código. Si tenía la intención de reemplazar todas las apariciones, un reemplazo de expresiones regulares es mejor:
ans = ans.replace(/ /g, '+'); ans = ans.replace(/ /g, '+'); ans = ans.replace(/\+\+/g, '+'); Si solo se dirige a navegadores modernos, puede usar replaceAll en su lugar:
ans = ans.replaceAll(' ', '+'); ans = ans.replaceAll(' ', '+'); ans = ans.replaceAll('++', '+');¿Por qué se detiene antes de completar el proceso?
Para responder a su única pregunta, el ciclo finaliza prematuramente porque escribe en la variable ans y, por lo tanto, cambia la longitud de la variable ans (que se usa como condición en el ciclo for ). Entonces, si acorta su longitud, el ciclo se detiene antes (ya que la nueva longitud no se refleja).
Pero verifique otras respuestas sobre cómo escribirlo mejor.