确定JavaScript的值是否是一个“整数”?
可能重复:
检查一个variables是否包含Javascript中的数值?
如何检查variables是否是jQuery中的整数?
例:
if (id == int) { // Do this }
我使用以下从URL获取ID。
var id = $.getURLParam("id");
但是我想检查一下variables是否是一个整数。
尝试这个:
if(Math.floor(id) == id && $.isNumeric(id)) alert('yes its an int!');
$.isNumeric(id)
检查是否是数字
Math.floor(id) == id
然后将确定它是否真的是整数值而不是浮点数。 如果它是一个浮点parsing到int会给出一个不同于原来的值的结果。 如果是int,那么两者将是相同的。
@bardiir使用类似的方法来检查一个值是否是数字。 但是这种方法要简单得多。
/* I just realized that +n === parseInt(n) won't filter strings. Hence I modified it. At least now it doesn't require any extra function calls. */ function isInt(n) { return +n === n && !(n % 1); }
+n
强制转换为数字。 然后我们使用严格的等式( ===
)来检查它是否是一个整数。 简单而高效。
编辑:好像很多人需要检查数字types,所以我会分享我经常使用的function列表:
/* -9007199254740990 to 9007199254740990 */ function isInt(n) { return +n === n && !(n % 1); } /* -128 to 127 */ function isInt8(n) { return +n === n && !(n % 1) && n < 0x80 && n >= -0x80; } /* -32768 to 32767 */ function isInt16(n) { return +n === n && !(n % 1) && n < 0x8000 && n >= -0x8000; } /* -2147483648 to 2147483647 */ function isInt32(n) { return +n === n && !(n % 1) && n < 0x80000000 && n >= -0x80000000; } /* 0 to 9007199254740990 */ function isUint(n) { return +n === n && !(n % 1) && n >= 0; } /* 0 to 255 */ function isUint8(n) { return +n === n && !(n % 1) && n < 0x100 && n >= 0; } /* 0 to 65535 */ function isUint16(n) { return +n === n && !(n % 1) && n < 0x10000 && n >= 0; } /* 0 to 4294967295 */ function isUint32(n) { return +n === n && !(n % 1) && n < 0x100000000 && n >= 0; } /* Any number including Infinity and -Infinity but not NaN */ function isFloat(n) { return +n === n; } /* Any number from -3.4028234e+38 to 3.4028234e+38 (Single-precision floating-point format) */ function isFloat32(n) { return +n === n && Math.abs(n) <= 3.4028234e+38; } /* Any number excluding Infinity and -Infinity and NaN (Number.MAX_VALUE = 1.7976931348623157e+308) */ function isFloat64(n) { return +n === n && Math.abs(n) <= 1.7976931348623157e+308; }
希望这对某个人有用。
使用jQuery的IsNumeric方法。
http://api.jquery.com/jQuery.isNumeric/
if ($.isNumeric(id)) { //it's numeric }
更正:这不会确保一个整数 。 这个会:
if ( (id+"").match(/^\d+$/) ) { //it's all digits }
当然,这并不使用jQuery,但我认为只要解决scheme有效,jQuery实际上并不是强制性的