JavaScript

Надо каждое чётное число заменить на "Х". Пишу условие и программа виснет.

Что не так делаю?

function func_9(a, b){
let i = a,
res = '';
while(i <= b){
res += `${i} `;
i++;
if(i % 2 === 0){
i = "X";
}
}
return res;
}
console.log(`Task_9: ${func_9(1, 10)}`);

В дебагере не могу прогнать цикл, что бы посмотреть как он работает, ибо зависает
----------------------------------------------------
код здесь:
codepen.io/vvv7220/pen/ExxxWjZ?editors=0011
Андрей Хренов
Андрей Хренов
28 587
Можно поточнее, что должна возвращать функция?
P.S. а зависает, потому что уходит в бесконечный цикл, т. к. вы присваиваете в i строку, и потом сравниваете строку с числом.
Даже не так. Я вообще не понимаю что происходит. "X" это вообще что? Строка "X", какое-то иное заданное число?
res += `${i} `; вообще не понятно что за зверь.
если вы используете какие-то препроцессоры то нужно указывать.

P.P.S.

Короче, вот функция, которые возвращает строку состоящую из идущих подряд цифр от a до b, где каждое четное число заменено на "X"

function replaceEvenInt(a,b){

let i = a,
res = "";

while(i <= b){

if(!(i % 2)){
res += "X";
} else {
res += i;
}

i++;

}

return res;

}
Ислам Валиахметов
Ислам Валиахметов
880
Лучший ответ
Андрей Хренов 1 X 3 X 5 X 7 X 9 X
Так должно быть. Четные заменены на "X"
У меня после ваших стараний вообще весь ноут наглухо завис, минут 40 только и делал что перезагружал )))
Если вам нужно 1X3X5X7X9X, то вот так вроде работает
function func (a,b) {
res = '';
while (a <= b) {
if (a % 2 == 0) {
res += "X";
}
else {res += a.toString();}
a++;
}
return res
}
console.log(func(1,10));
СК
Сако Кулатай
58 436
Нельзя менять значение переменной цикла внутри цикла
А Филиппов
А Филиппов
75 812
function func_9(a, b){
  let str = "";
  for( a; a <= b; a++ ){
    str += a % 2? a : " X ";
  }
  return str.trim();
}
console.log("Task_9: " + func_9(1, 10)); // Task_9: 1 X 3 X 5 X 7 X 9 X

______

То же, что и

while( a <= b ){
  str += a % 2? a : " X ";
  a++;
}
Ты переменной "i" типа integer присваиваешь значение X типа char. Фу таким быть, это джава, а не пайтон.
Сергей Зуев Это JS, здесь неявно определение типа переменных.
т. е. "2" == 2 => true
Емое, навертел-то, говнокодер
Vlad D
Vlad D
3 942
Андрей Хренов Думаешь так стоит попробовать? Пожалуй твой ответ самый конструктивный здесь. И код расписан очень понятно. Спасибо