js判断是否为整数类型(5种方式)

本文介绍了五种JavaScript中判断整数的方法,包括使用取余运算符、Math系列函数、parseInt、位运算及ES6的Number.isInteger()。每种方法均有其适用场景和局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

任何整数都会被1整除,即余数是0。利用这个规则来判断是否是整数。

function isInteger(obj) {
 return obj%1 === 0
}

isInteger(3) // true
isInteger(3.3) // false 

isInteger('') // true
isInteger('3') // true
isInteger(true) // true
isInteger([]) // true

对于空字符串、字符串类型数字、布尔true、空数组都返回了true。对这些类型的内部转换细节感兴趣的请参考:JavaScript中奇葩的假值
因此,需要先判断下对象是否是数字,比如加一个typeof

function isInteger(obj) {
 return typeof obj === 'number' && obj%1 === 0
}

isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false

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

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

function isInteger(obj) {
 return Math.floor(obj) === obj
}


isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false

方式三、通过parseInt判断

function isInteger(obj) {
 return parseInt(obj, 10) === obj
}

isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false、

//很不错,但也有一个缺点
isInteger(1000000000000000000000) // false

原因是parseInt在解析整数之前强迫将第一个参数解析成字符串。这种方法将数字转换成整型不是一个好的选择。

方式四、通过位运算判断

function isInteger(obj) {
 return (obj | 0) === obj
}

isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false

//这个函数很不错,效率还很高。但有个缺陷,上文提到过,位运算只能处理32位以内的数字,对于超过32位的无能为力
isInteger(Math.pow(2, 32)) // 32位以上的数字返回false了

方式五、ES6提供了Number.isInteger

Number.isInteger(3) // true
Number.isInteger(3.1) // false
Number.isInteger('') // false
Number.isInteger('3') // false
Number.isInteger(true) // false
Number.isInteger([]) // false

目前,最新的Firefox和Chrome已经支持。

转自:http://www.jb51.net/article/75813.htm

### JavaScript 判断整数方法 在 JavaScript 中,可以通过多种方式判断一个数值是否为正整数。以下是几种常见的实现方法: #### 方法一:基于 `parseInt` 和比较运算符 通过将目标值与其经过 `parseInt` 转换后的结果进行对比,可以初步判断该值是否整数[^1]。再结合大于零的条件即可完成正整数的判定。 ```javascript function isPositiveInteger(x) { if (x > 0 && x === parseInt(x)) { return true; } return false; } ``` 此方法简单直观,但对于某些特殊情况(如字符串类型的数字)可能无法完全覆盖。 --- #### 方法二:利用 ES6 的 `Number.isInteger` ES6 提供了内置函数 `Number.isInteger()` 来检测某个值是否整数。结合这一特性以及对正值的要求,可构建如下逻辑[^2]: ```javascript function isPositiveInteger(value) { if (Number.isInteger(value) && value > 0) { return true; } return false; } ``` 这种方法更加现代化且语义清晰,适用于大多数现代浏览器环境。 --- #### 方法三:使用正则表达式匹配 对于需要严格区分输入类型的情况(例如用户提交的数据可能是字符串),可以借助正则表达式来进行验证[^4]。以下是一个典型的例子: ```javascript function isPositiveInteger(value) { const regex = /^[1-9]\d*$/; // 匹配以非零开头的纯数字序列 return typeof value === 'string' ? regex.test(value.trim()) : Number.isInteger(value) && value > 0; } ``` 这里不仅考虑到了字符串型输入的可能性,还兼顾了潜在的空白字符干扰问题。 --- ### 综合示例代码 如果希望创建一个通用工具函数,则可以综合以上三种思路设计更全面的解决方案: ```javascript /** * 判断给定值是否为正整数 * @param {*} value 待检验的值 * @returns {boolean} 是否满足条件 */ export function isPositiveInteger(value) { if (typeof value === 'number') { return Number.isInteger(value) && value > 0; // 数字类型直接检查 } else if (typeof value === 'string') { const trimmedValue = value.trim(); return trimmedValue !== '' && /^[1-9]\d*$/.test(trimmedValue); // 字符串需额外过滤空格并测试模式 } return false; // 非合法类型一律返回false } ``` 上述代码片段能够有效应对不同场景下的需求变化。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值