Я не могу найти, что работа, как я хочу - PullRequest
0 голосов
/ 15 декабря 2011

Я ищу лучший способ проверить, является ли var числом

function isInt(n){ 
   return !isNaN(parseInt(n * 1));
}

alert(isInt(""));//true

Этот веб-сайт мне лгал http://www.inventpartners.com/content/javascript_is_int

и второй комментарий парняanser https://stackoverflow.com/a/3886106/908879 напугал меня достаточно, чтобы не использовать его ответ

пожалуйста, помогите мне найти правильный ответ plxplx

Ответы [ 4 ]

3 голосов
/ 15 декабря 2011

Следующее может быть довольно хорошим решением вашей проблемы. Однако это возвращает false, если это число с плавающей запятой

function isInt(n){ 
    return !isNaN(parseFloat(n)) && isFinite(n) && (n % 1 == 0); 
};

Если вы хотите знать, если это вообще число, лучшим решением будет

function isNumber(n){ 
    return !isNaN(parseFloat(n)) && isFinite(n); 
};

Смотри также: http://dl.dropbox.com/u/35146/js/tests/isNumber.html

0 голосов
/ 19 апреля 2013

Существуют быстродействующие решения, если вам нужна скорость.

function isInt(v) { return v === ~~v; }
function isNumber(v) { return v === +v; }
function isNumeric(v) { return v === +v || v === +v + ''; }
function isIntLike(v) { return v === ~~v || v === ~~v + ''; }

Все соответствующие проверки могут быть определены без вызовов функций.

Обратите внимание, что NaN !== NaN, поэтому isNaN вызов не требуется.

0 голосов
/ 15 декабря 2011

Возможно, вам придется выполнить еще большую проверку:

function isInt(n){ 
 n = Number(n);
 return String(n).length 
        && !isNaN(parseInt(n,10)) 
        && n%1 === 0;
}
0 голосов
/ 15 декабря 2011

, если вы хотите знать, что n - это число, вы можете использовать:

function isNumber(n){
    return typeof n == 'number';
}
alert(isNumber(""));//false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...