Определить, является ли значение 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 фактически не является обязательным, если решение работает