我如何检查如果一个变量是一个整数在JavaScript,并抛出一个警告,如果它不是?我试过了,但不管用:
<html>
<head>
<script type="text/javascript">
var data = 22;
alert(NaN(data));
</script>
</head>
</html>
我如何检查如果一个变量是一个整数在JavaScript,并抛出一个警告,如果它不是?我试过了,但不管用:
<html>
<head>
<script type="text/javascript">
var data = 22;
alert(NaN(data));
</script>
</head>
</html>
当前回答
如果你的浏览器支持,Number.isInteger()是最好的方法,如果不支持,我认为有很多方法:
function isInt1(value){
return (value^0) === value
}
or:
function isInt2(value){
return (typeof value === 'number') && (value % 1 === 0);
}
or:
function isInt3(value){
return parseInt(value, 10) === value;
}
or:
function isInt4(value){
return Math.round(value) === value;
}
现在我们可以测试结果:
var value = 1
isInt1(value) // return true
isInt2(value) // return true
isInt3(value) // return true
isInt4(value) // return true
var value = 1.1
isInt1(value) // return false
isInt2(value) // return false
isInt3(value) // return false
isInt4(value) // return false
var value = 1000000000000000000
isInt1(value) // return false
isInt2(value) // return true
isInt3(value) // return false
isInt4(value) // return true
var value = undefined
isInt1(value) // return false
isInt2(value) // return false
isInt3(value) // return false
isInt4(value) // return false
var value = '1' //number as string
isInt1(value) // return false
isInt2(value) // return false
isInt3(value) // return false
isInt4(value) // return false
所有这些方法都可以,但当数字很大时,parseInt和^ operator就不能很好地工作了。
其他回答
检查变量是否等于相同的变量四舍五入为整数,就像这样:
if(Math.round(data) != data) {
alert("Variable is not an integer!");
}
此外,Number.isInteger()。也许Number.isSafeInteger()是这里使用es6指定的另一个选项。
在es6之前的浏览器中填充Number.isSafeInteger(..):
Number.isSafeInteger = Number.isSafeInteger || function(num) {
return typeof num === "number" &&
isFinite(num) &&
Math.floor(num) === num &&
Math.abs( num ) <= Number.MAX_SAFE_INTEGER;
};
在今天的浏览器中,Number.isInteger()是一种方式,就像之前解释的许多答案一样,但我遇到了一个常见的问题,它发生在我构建API的时候。
所以在API请求中,我们以字符串的形式接收属性,因此Number.isInteger()将返回false。
如果我们尝试用Number.isInteger(parseInt())检查它,那么值就像1.1或1。Asd返回true
为了解决这个问题,我创建了一个函数,它检查值是否为整数,将其作为整数或字符串传递
function isNumber(value) {
return ([...value.toString()]
.filter(x => [ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' ]
.indexOf(x) >= 0))
.length == Math.max(value.toString().length, 1)
}
Math.max()部分用于处理空字符串
你可以使用这个函数:
function isInteger(value) {
return (value == parseInt(value));
}
即使值是包含整数值的字符串,它也将返回true。 因此,结果将是:
alert(isInteger(1)); // true
alert(isInteger(1.2)); // false
alert(isInteger("1")); // true
alert(isInteger("1.2")); // false
alert(isInteger("abc")); // false
为文本框添加类numOnly,
$(document).on("input", ".numOnly", function(e) {
this.value = this.value.replace(/[^0-9\$]/g,'');
if(this.value!=""){
alert('Integer Number.');
}else{
alert('Not an Integer Number.');
}
});
这对我有用。试试这个
你可以使用键盘,键上,键下等,而不是输入。