最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中判斷整數(shù)的多種方法總結

 更新時間:2014年11月08日 10:41:38   投稿:junjie  
這篇文章主要介紹了JavaScript中判斷整數(shù)的多種方法總結,本文總結了5種判斷整數(shù)的方法,如取余運算符判斷、Math.round、Math.ceil、Math.floor判斷等,需要的朋友可以參考下

之前記錄過JavaScript中判斷為數(shù)字類型的多種方式,這篇看看如何判斷為整數(shù)類型(Integer)。

JavaScript中不區(qū)分整數(shù)和浮點數(shù),所有數(shù)字內部都采用64位浮點格式表示,和Java的double類型一樣。但實際操作中比如數(shù)組索引、位操作則是基于32位整數(shù)。

方式一、使用取余運算符判斷

任何整數(shù)都會被1整除,即余數(shù)是0。利用這個規(guī)則來判斷是否是整數(shù)。

復制代碼 代碼如下:

function isInteger(obj) {
    return obj%1 === 0
}
isInteger(3) // true
isInteger(3.3) // false  

以上輸出可以看出這個函數(shù)挺好用,但對于字符串和某些特殊值顯得力不從心

復制代碼 代碼如下:

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

對于空字符串、字符串類型數(shù)字、布爾true、空數(shù)組都返回了true,真是難以接受。對這些類型的內部轉換細節(jié)感興趣的請參考:JavaScript中奇葩的假值

因此,需要先判斷下對象是否是數(shù)字,比如加一個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判斷

整數(shù)取整后還是等于自己。利用這個特性來判斷是否是整數(shù),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

這個直接把字符串,true,[]屏蔽了,代碼量比上一個函數(shù)還少。

三、通過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

竟然返回了false,沒天理啊。原因是parseInt在解析整數(shù)之前強迫將第一個參數(shù)解析成字符串。這種方法將數(shù)字轉換成整型不是一個好的選擇。

四、通過位運算判斷

復制代碼 代碼如下:

function isInteger(obj) {
    return (obj | 0) === obj
}
isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false

這個函數(shù)很不錯,效率還很高。但有個缺陷,上文提到過,位運算只能處理32位以內的數(shù)字,對于超過32位的無能為力,如

復制代碼 代碼如下:

isInteger(Math.pow(2, 32)) // 32位以上的數(shù)字返回false了

當然,多數(shù)時候我們不會用到那么大的數(shù)字。

五、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已經支持。

相關文章

  • Javascript call及apply應用場景及實例

    Javascript call及apply應用場景及實例

    這篇文章主要介紹了Javascript call及apply應用場景及實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Jquery對數(shù)組的操作技巧整理

    Jquery對數(shù)組的操作技巧整理

    這篇文章主要介紹了Jquery對數(shù)組的操作技巧,需要的朋友可以參考下
    2014-03-03
  • JavaScript實現(xiàn)數(shù)組降維詳解

    JavaScript實現(xiàn)數(shù)組降維詳解

    大家都知道將多維數(shù)組(尤其是二維數(shù)組)轉化為一維數(shù)組是業(yè)務開發(fā)中的常用邏輯,除了使用樸素的循環(huán)轉換以外,我們還可以利用Javascript的語言特性和數(shù)據(jù)結構的思想實現(xiàn)更為簡潔優(yōu)雅的轉換。下面跟著小編一起來學習學習關于JavaScript如何實現(xiàn)數(shù)組降維吧。
    2017-01-01
  • js計算精度問題小結

    js計算精度問題小結

    js計算精度問題小結,需要的朋友可以參考一下
    2013-04-04
  • js函數(shù)與php函數(shù)的區(qū)別實例淺析

    js函數(shù)與php函數(shù)的區(qū)別實例淺析

    這篇文章主要介紹了js函數(shù)與php函數(shù)的區(qū)別,以實例形式較為簡單的分析了js函數(shù)與php函數(shù)語法及應用上的不同點,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • webpack是如何實現(xiàn)模塊化加載的方法

    webpack是如何實現(xiàn)模塊化加載的方法

    這篇文章主要介紹了webpack是如何實現(xiàn)模塊化加載的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • js+html5實現(xiàn)頁面可刷新的倒計時效果

    js+html5實現(xiàn)頁面可刷新的倒計時效果

    這篇文章主要為大家詳細介紹了js+html5實現(xiàn)頁面可刷新的倒計時效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 兼容ie ff div 層 打開+關閉+ 拖動+遮罩+移動+動畫改變高寬

    兼容ie ff div 層 打開+關閉+ 拖動+遮罩+移動+動畫改變高寬

    div層 打開+關閉+ 拖動+遮罩+移動+動畫改變高寬的實例js代碼
    2008-07-07
  • 微信小程序實現(xiàn)環(huán)形進度條

    微信小程序實現(xiàn)環(huán)形進度條

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)環(huán)形進度條,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • js 增強型title信息提示效果

    js 增強型title信息提示效果

    js操作div仿title提示信息效果,增強型title信息提示,效果不錯。
    2010-06-06

最新評論

桐柏县| 股票| 象州县| 通州区| 综艺| 廊坊市| 湖口县| 达日县| 定南县| 天祝| 同江市| 云安县| 黎城县| 旌德县| 固原市| 顺平县| 平和县| 舞钢市| 武功县| 手机| 云梦县| 黑龙江省| 巴里| 满城县| 忻州市| 库尔勒市| 锦屏县| 荥阳市| 潜江市| 武平县| 康保县| 东莞市| 湟中县| 南澳县| 灵川县| 碌曲县| 汝南县| 民权县| 天全县| 德庆县| 昆明市|