Определить, является ли значение JavaScript "целочисленным"?

Возможный дубликат:
Проверьте, содержит ли переменная числовое значение в Javascript?

Как проверить, является ли переменная целой в jQuery?

Пример:

if (id == int) { // Do this }

Я использую следующее, чтобы получить идентификатор из URL.

var id = $.getURLParam("id");

Но я хочу проверить, является ли переменная целой.

Ответ 1

Попробуйте следующее:

if(Math.floor(id) == id && $.isNumeric(id)) 
  alert('yes its an int!');

$.isNumeric(id) проверяет, является ли оно числовым или нет. Math.floor(id) == id затем определит, действительно ли он имеет целочисленное значение, а не float. Если это float-синтаксический анализ его на int даст другой результат, чем исходное значение. Если это int будет одинаковым.

Ответ 2

Здесь polyfill для функций предиката Number:

"use strict";

Number.isNaN = Number.isNaN ||
    n => n !== n; // only NaN

Number.isNumeric = Number.isNumeric ||
    n => n === +n; // all numbers excluding NaN

Number.isFinite = Number.isFinite ||
    n => n === +n               // all numbers excluding NaN
      && n >= Number.MIN_VALUE  // and -Infinity
      && n <= Number.MAX_VALUE; // and +Infinity

Number.isInteger = Number.isInteger ||
    n => n === +n              // all numbers excluding NaN
      && n >= Number.MIN_VALUE // and -Infinity
      && n <= Number.MAX_VALUE // and +Infinity
      && !(n % 1);             // and non-whole numbers

Number.isSafeInteger = Number.isSafeInteger ||
    n => n === +n                     // all numbers excluding NaN
      && n >= Number.MIN_SAFE_INTEGER // and small unsafe numbers
      && n <= Number.MAX_SAFE_INTEGER // and big unsafe numbers
      && !(n % 1);                    // and non-whole numbers

Все основные браузеры поддерживают эти функции, кроме isNumeric, которого нет в спецификации, потому что я его придумал. Следовательно, вы можете уменьшить размер этого polyfill:

"use strict";

Number.isNumeric = Number.isNumeric ||
    n => n === +n; // all numbers excluding NaN

Также можно просто n === +n выражение n === +n вручную.

Ответ 3

Использовать метод jQuery IsNumeric.

http://api.jquery.com/jQuery.isNumeric/

if ($.isNumeric(id)) {
   //it numeric
}

CORRECTION: это не гарантирует целое число. Это:

if ( (id+"").match(/^\d+$/) ) {
   //it all digits
}

Это, конечно, не использует jQuery, но я предполагаю, что jQuery фактически не является обязательным, если решение работает