用 js 判断一个数是整数的方式有很多,在这里总结一下。
TL;DR:
1、使用取余的方式,因为任意整数取1的余数都是0。
2、使用 Math.round、Math.ceil、Math.floor,整数取整也永远等于其本身。
3、使用 parseInt(x,10)
4、使用或运算 | ,整数和0采用或运算永远等于本身
5、使用 Number.isInteger() 判断
下面分别看一下细节:
1、使用取余的方式
众所周知,js 具有类型自动转换的效果,所以要先判断数据类型是否是 number,然后再判断取 1 的余数是否等于 0.
function isInteger(num) {
return typeof num === 'number' && num % 1 === 0
}
isInteger(3) //true
isInteger(0.34) //false
isInteger('3') //false
isInteger('') //false
isInteger(true) //false
isInteger([]) //false
2、使用 Math.round、Math.ceil、Math.floor
使用 Math.floor()示意一下:
function isInteger(num) {
return Math.floor(num) === num
}
isInteger(3) //true
isInteger(0.34) //false
isInteger('3') //false
isInteger('') //false
isInteger(true) //false
isInteger([]) //false
3、使用 parseInt(x,10)
function isInteger(num) {
return parseInt(num, 10) === num
}
isInteger(3) //true
isInteger(0.34) //false
isInteger('3') //false
isInteger('') //false
isInteger(true) //false
isInteger([]) //false
4、使用或运算
function isInteger(num) {
return (num | 0) === num
}
isInteger(3) //true
isInteger(0.34) //false
isInteger('3') //false
isInteger('') //false
isInteger(true) //false
isInteger([]) //false
小科普:与运算:两个位都为 1 时才为 1,其他都为 0;或运算:两个位都为 0 时才为 0,其他都为 1。
5、使用 Number.isInteger()
function isInteger(num) {
return Number.isInteger(num)
}
isInteger(3) //true
isInteger(0.34) //false
isInteger('3') //false
isInteger('') //false
isInteger(true) //false
isInteger([]) //false