javaScript中判断是否为整数的方法(五种)【算法】

javaScript中判断是否为整数的方法(五种)【算法】

方式一、使用取余运算符判断

思路: 利用任何整数都会被1整除,即余数是0的特定,通过这个规则来判断是否是整数。

function isInteger(obj) {

return obj%1 === 0

}

isInteger(5) // true

isInteger(5.72) // false

以上输出可以看出这个函数挺好用,但对于【字符串和某些特殊值】则需要完善一下检验规则,否则会被 “欺骗”,对于空字符串、字符串类型数字、布尔true、空数组都返回了true,因为再取余的时候,他们都会进行类型装换,如下像空字符串,空数组都是转化成0,而true就会转成1

isInteger('') // true

isInteger('5') // true

isInteger(true) // true

isInteger([]) // true

所以比较前我们判断一下类型即可,如下优化:

function isInteger(obj) {

return typeof obj === 'number' && obj%1 === 0

}

isInteger('') // false

isInteger('5') // false

isInteger(true) // false

isInteger([]) // false

方式二、使用Math.round、Math.ceil、Math.floor判断

思路: 整数取整后还是等于自己。利用这个特性来判断是否是整数,Math.floor 示例,如下:

unction isInteger(obj) {

return Math.floor(obj) === obj

}

isInteger(5) // true

isInteger(5.72) // false

isInteger('') // false

isInteger('5') // false

isInteger(true) // false

isInteger([]) // false

Math.floor 方法中会自动将参数转成数字进行向下取值,同理使用 Math.ceil 向上取整,Math.round 四舍五入

方式三、通过parseInt()判断

思路: 利用parseInt()十进制的转化特点

function isInteger(obj) {

return parseInt(obj, 10) === obj

}

isInteger(5) // true

isInteger(5.72) // false

isInteger('') // false

isInteger('5.72') // false

isInteger(true) // false

isInteger([]) // false

但是对于超过检测范围的数就会不在检测,统一返回该检测数字的首个数字

parseInt(1000000000000000000000) // 1 false

parseInt(412300213123400000000.21312) // 4 false

方式四、通过位运算 “|” 判断

思路: 按位或运算符 | 是双目运算符。 其功能是将参与运算的两数转成32位二进制后, 各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。因此利用该特性,任一数字和0位或都是返回它本身,同理非数字都是进行类型转化后再进行位或

function isInteger(obj) {

return (obj | 0) === obj

}

isInteger(5) // true

isInteger(5.72) // false

isInteger('') // false

isInteger('5') // false

isInteger(true) // false

isInteger([]) // false

关于位或运算,效率是比 Math.floor , parseInt高的,如需了解位运算符的实用方法可以看 → Javascript中的 位运算符 + 使用场景 + 性能对比 + 封装

方式五、ES6提供了Number.isInteger

思路: 这是Number中的一个API方法,用来判断给定参数是否为整数,具体可参考 → Number.isInteger

Number.isInteger(5) // true

Number.isInteger(5.72) // false

Number.isInteger('') // false

Number.isInteger('5') // false

Number.isInteger(true) // false

Number.isInteger([]) // false

浏览器兼容上大多数已经实现支持,目前IE并不支持

结语

以上就是判断是否为整数类型的五种方式,这五种方式各有优缺点,大家可以进行仔细比较,选择最优的进行使用。

相关推荐

键盘键位冲突怎么办
365bet假网站

键盘键位冲突怎么办

📅 09-14 👁️ 5152
买什么?Kingston 金士顿 HyperX 阿尔法耳机和黑鹰S对比
為什麼要「飯後散步」?告訴你6好處:降血糖、控制體重,散步走多久才健康
倾心是什么意思词典解释
365bet假网站

倾心是什么意思词典解释

📅 08-10 👁️ 7572
厦门大学附属中山医院官网
365bet中文比分

厦门大学附属中山医院官网

📅 08-13 👁️ 4856
道别耐克?!鲁尼职业生涯都穿过什么球鞋?
iPad 有原生計算機了!iPadOS 18 除內建計算機 App ,也支援手寫計算公式
Excel添加斜线表头的3种方法
365bet假网站

Excel添加斜线表头的3种方法

📅 09-14 👁️ 4548
猎豹贷款这个贷款平台怎么样,贷款审批流程严吗
365bet中文比分

猎豹贷款这个贷款平台怎么样,贷款审批流程严吗

📅 07-03 👁️ 4118