我如何检查如果一个变量是一个整数在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>
当前回答
对于没有分隔符的正整数值:
return ( data !== '' && data === data.replace(/\D/, '') );
测试 1. 如果不是空的, 2. 如果value等于在其值中替换非数字字符的结果。
其他回答
检查变量是否等于相同的变量四舍五入为整数,就像这样:
if(Math.round(data) != data) {
alert("Variable is not an integer!");
}
首先,NaN是一个“数字”(是的,我知道这很奇怪,就这样吧),而不是一个“函数”。
你需要检查变量的类型是否为数字,如果是整数,我会使用模数。
alert(typeof data === 'number' && data%1 == 0);
使用时要小心
num % 1
空字符串(")或布尔值(真或假)将返回为整数。你可能不想这么做
false % 1 // true
'' % 1 //true
Number.isInteger(数据)
Number.isInteger(22); //true
Number.isInteger(22.2); //false
Number.isInteger('22'); //false
内置功能在浏览器中。不支持旧浏览器
选择:
Math.round(num)=== num
然而,Math.round()对于空字符串和布尔值也会失败
在今天的浏览器中,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()部分用于处理空字符串
你可以检查这个数字是否有余数:
var data = 22;
if(data % 1 === 0){
// yes it's an integer.
}
请注意,如果你的输入也可以是文本,你想先检查它不是,那么你可以先检查类型:
var data = 22;
if(typeof data === 'number'){
// yes it is numeric
if(data % 1 === 0){
// yes it's an integer.
}
}