成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Javascript把數(shù)字從string變?yōu)閚umber的5種方式

dabai / 1743人閱讀

摘要:很多時(shí)候,我們的數(shù)字是字符串的形式的,如,它們可能是從輸入框中獲取,可能是來自后端的接口。我們有義務(wù)把他們變成整型。下面介紹幾種方案這是就有的語法了,用法版本發(fā)展到的時(shí)候,被移到中。遇到浮點(diǎn)數(shù)時(shí),小數(shù)部分被丟棄。遇到非法字符,直接被轉(zhuǎn)換成。

很多時(shí)候,我們的數(shù)字是字符串的形式的,如:"1", "3", ["2", "4"],它們可能是從輸入框 中獲取,可能是來自后端的接口。我們有義務(wù)把他們變成整型。下面介紹幾種方案

1、parseInt

這是es3就有的語法了,用法:

parseInt("123"); // 123  => number

js版本發(fā)展到es6的時(shí)候,parseInt被移到Number中。當(dāng)然了,原來的parseInt可以繼續(xù)使用

Number.parseInt("123"); // 123  => number

加入數(shù)字中帶有非數(shù)字的字符,那么第一個(gè)出現(xiàn)非法字符的地方將會(huì)被截?cái)?/p>

Number.parseInt("1239y93p21"); // 1239  => number
2、parseFloat

和parseInt差不多,但parseFloat主要針對(duì)浮點(diǎn)數(shù)的轉(zhuǎn)換

parseFloat("123");          // 123  => number
Number.parseFloat("123");   // 123  => number

Number.parseFloat("123.4"); // 123.4 => number

同樣有截?cái)喾欠ㄗ址囊?guī)則

Number.parseInt("1239.34y93p21");     // 1239.34  => number
Number.parseInt("12 39.34y93p21");    // 12  => number
3、Number

es6新出的接口,可以直接使用,并且對(duì)浮點(diǎn)數(shù)也是有效的

Number("123");     // 123  => number
Number("123.4");   // 123.4 => number

與parse*()不同,Number處理時(shí),遇到非法字符,直接NaN了,注意:NaN的類型也是number。

Number("123b");     // NaN  => number
Number("123.4b");   // NaN  => number
4、乘法+減法

是的,直接乘以1就行了

"123" * 1;     // 123  => number
"123.4" * 1;   // 123.4 => number

‘123’ - 0;    // 1234 => number
"123.4" - 0;   // 123.4 => number

遇到非法字符,也是直接NaN了。

"123b" * 1; // NaN  => number

注意:加法是不能轉(zhuǎn)換類型的呢,會(huì)被當(dāng)成字符串拼接:

"123" + 0; // ’1230‘  => string
5、按位或

這就是二進(jìn)制方面的處理了,但是只能處理整數(shù)。遇到浮點(diǎn)數(shù)時(shí),小數(shù)部分被丟棄。遇到非法字符,直接被轉(zhuǎn)換成0。因?yàn)榘次换驎?huì)將數(shù)字轉(zhuǎn)換成帶符號(hào)的32位整數(shù),多余的位數(shù)會(huì)被直接丟棄;所以按位或支持的整數(shù)范圍是[pow(-2, 31), pow(2, 31) - 1]

"123" | 0;           // 123  => number

"123.4" | 0;         // 123 => number
"123rd" | 0;         // 0 => number

a = Math.pow(2, 31) // 2147483648 <=> 10000000000000000000000000000000

a | 0               // -2147483648 => number
(a - 1) | 0         // 2147483647 => number

為什么整數(shù)轉(zhuǎn)為負(fù)數(shù)了呢,因?yàn)閹Х?hào)二進(jìn)制中,最高位(第32)是1,代表負(fù)數(shù)


題外話

對(duì)于字符串?dāng)?shù)組的轉(zhuǎn)換,可以利用Number的特性

["1", "2", "3"].map(Number)  // [1, 2, 3] => number[]

還有其他的嗎?如果有補(bǔ)充歡迎留言。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108007.html

相關(guān)文章

  • JavaScript-數(shù)據(jù)類型轉(zhuǎn)換

    摘要:通過使用的方式獲取對(duì)象的數(shù)據(jù)類型,包括以下類型。該函數(shù)指定字符串中的首個(gè)字符是否是數(shù)字。 一、動(dòng)態(tài)類型語言 JavaScript是一種動(dòng)態(tài)類型語言(dynamically typed language)。這意味著你聲明變量時(shí)可以不必指定數(shù)據(jù)類型,而數(shù)據(jù)類型會(huì)在腳本執(zhí)行時(shí)根據(jù)需要自動(dòng)轉(zhuǎn)換。 1.1 定義變量 showImg(https://segmentfault.com/img/bV6...

    wangxinarhat 評(píng)論0 收藏0
  • 通過一張簡(jiǎn)單圖,讓你徹底地、永久地搞懂JS==運(yùn)算

    摘要:一有和無在圖中,值的六種類型用藍(lán)底色的矩形表示。想一下在語言中,根本沒有布爾類型,通常用來表示邏輯真假的正是整數(shù)和。根據(jù)圖,需要將布爾類型轉(zhuǎn)為數(shù)字類型,而轉(zhuǎn)為數(shù)字的結(jié)果是,所以表達(dá)式變?yōu)閮蓚€(gè)操作數(shù)變成了對(duì)象類型數(shù)字類型。 大家知道,==是JavaScript中比較復(fù)雜的一個(gè)運(yùn)算符。它的運(yùn)算規(guī)則奇怪,容易讓人犯錯(cuò),從而成為JavaScript中最糟糕的特性之一。 在仔細(xì)閱讀了ECMASc...

    testbird 評(píng)論0 收藏0
  • js溫故而知新5——學(xué)習(xí)廖雪峰js教程

    摘要:表示行的結(jié)束,表示必須以數(shù)字結(jié)束。用表示的就是要提取的分組。方法在匹配成功后,會(huì)返回一個(gè),第一個(gè)元素是正則表達(dá)式匹配到的整個(gè)字符串,后面的字符串表示匹配成功的子串。貪婪匹配需要特別指出的是,正則匹配默認(rèn)是貪婪匹配,也就是匹配盡可能多的字符。 對(duì)象 typeof 123; // number typeof NaN; // number typeof str; // string type...

    mayaohua 評(píng)論0 收藏0
  • 有關(guān)javascript強(qiáng)制轉(zhuǎn)換不得不說故事

    摘要:我們首先了解一下中有關(guān)類型轉(zhuǎn)換的知識(shí)。新增類型拋出異常從列表可以明顯看到少了一個(gè)類型轉(zhuǎn)換為的規(guī)則。這里要強(qiáng)調(diào)一點(diǎn)第二個(gè)表達(dá)式?jīng)]有涉及到強(qiáng)制類型轉(zhuǎn)換。如果文中有錯(cuò)誤或者有某些強(qiáng)制轉(zhuǎn)換的情形沒有涉及到請(qǐng)及時(shí)留言告知,我會(huì)修改并補(bǔ)充進(jìn)去。 javascript是一門非常奇特的語言,它有時(shí)候奇特的會(huì)讓人懷疑人生。比如讓我們看一下下面的一些奇葩例子: false == 0 ...

    xcold 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<