Как я могу повторить цикл, если результат не является числом?

#javascript #do-while

#javascript #do-while

Вопрос:

Я пытаюсь что-то сделать для переменной хэшей с помощью цикла (do, while), но страница повторяет цикл каждый раз, когда я пишу цифры или символы итак, как я могу проверить, является ли результат запроса цифрой, а не какими-либо символами.

вот мой код:

 function pick_number(arg)
{
    var hash = "#",
        set_new_hash = '';
    for (var i = 0; i < arg; i  )
    {
        for (var j = 0; j < arg; j  )
        {
            document.body.innerHTML  = hash;
            console.log(hash);
        }        
        for (var j = arg - 1; j > i ; j--)
        {
            document.body.innerHTML  = " ";
            console.log(" ");
        }         
        document.body.innerHTML  = "<br>";
    }
}

var x = '';

do 
{
    x = pick_number(prompt("Pick a number"));    
} while (typeof x != 'number');
 

Ответ №1:

Преобразуйте аргумент в число, затем проверьте, является ли оно NaN :

 function pick_number(arg) {
  const num = Number(arg);
  if (Number.isNaN(num)) {
    return;
  }
  // rest of the code; use `num` here
}
let x;
do {
  x = pick_number(prompt("Pick a number"));
} while (x === undefined);
 

Комментарии:

1. Я не пробовал ваш код, но что мне нужно понять, если я создам возврат, как вы делаете в -> if (number.isNaN(num)) {return;} , я думаю, что цикл сломается, так как цикл будет повторяться, если я использовал return ?

2. while (x === undefined) Тест приведет к продолжению цикла, если входные данные не являются числом.

Ответ №2:

Вы могли бы использовать тест регулярных выражений:

 do {
    x = pick_number(prompt("Pick a number"));    
} while (!/^d $/.test(x));