在JavaScript中把"123 asdf"轉(zhuǎn)化成數(shù)字的幾種方法
在 JavaScript 中,將字符串 "123 asdf" 轉(zhuǎn)換為數(shù)字有幾種方法,每種方法的結(jié)果和原理不同:
1.parseInt()- 最常用的方法
const str = "123 asdf"; const num = parseInt(str); // 123 console.log(num); // 123 console.log(typeof num); // "number"
特點(diǎn):
- 解析字符串開(kāi)頭的數(shù)字,直到遇到第一個(gè)非數(shù)字字符
- 忽略字符串開(kāi)頭的空格
- 能識(shí)別整數(shù),遇到小數(shù)點(diǎn)、字母或其他字符會(huì)停止解析
- 如果字符串以非數(shù)字開(kāi)頭,返回
NaN
parseInt("123 asdf"); // 123
parseInt("123.45 asdf"); // 123(整數(shù)部分)
parseInt("asdf 123"); // NaN
parseInt(" 456 abc"); // 456(忽略空格)
2.parseFloat()- 解析浮點(diǎn)數(shù)
const str = "123.45 asdf"; const num = parseFloat(str); // 123.45 console.log(num); // 123.45
特點(diǎn):
- 解析浮點(diǎn)數(shù),能識(shí)別第一個(gè)小數(shù)點(diǎn)
- 同樣在遇到非數(shù)字字符(除了第一個(gè)小數(shù)點(diǎn))時(shí)停止
parseFloat("123 asdf"); // 123
parseFloat("123.45 asdf"); // 123.45
parseFloat("123.45.67"); // 123.45(只識(shí)別第一個(gè)小數(shù)點(diǎn))
parseFloat("abc 123"); // NaN
3.Number()或一元加號(hào)運(yùn)算符
const str = "123 asdf"; // Number() 函數(shù) const num1 = Number(str); // NaN // 一元加號(hào)運(yùn)算符 const num2 = +str; // NaN
特點(diǎn):
- 要求整個(gè)字符串都是有效的數(shù)字表示
- 對(duì)于
"123 asdf"會(huì)返回NaN(因?yàn)楹蟹菙?shù)字字符)
Number("123"); // 123
Number("123.45"); // 123.45
Number("123 asdf"); // NaN(整個(gè)字符串必須都是數(shù)字)
+"123"; // 123
+"123 asdf"; // NaN
4.其他轉(zhuǎn)換方法
// Math.floor() - 向下取整
Math.floor("123 asdf"); // NaN
// 雙波浪號(hào) ~~ - 按位非(僅整數(shù))
~~"123 asdf"; // 0(轉(zhuǎn)換失?。?
// 使用正則表達(dá)式提取數(shù)字
const str = "123 asdf";
const match = str.match(/\d+/);
const num = match ? parseInt(match[0]) : 0; // 123
// 使用正則提取數(shù)字(包括小數(shù))
const num2 = parseFloat(str.match(/\d+\.?\d*/)); // 123
總結(jié)對(duì)比
| 方法 | 輸入 "123 asdf" | 輸入 "123.45 asdf" | 輸入 "asdf 123" | 特點(diǎn) |
|---|---|---|---|---|
parseInt() | 123 | 123 | NaN | 提取開(kāi)頭的整數(shù) |
parseFloat() | 123 | 123.45 | NaN | 提取開(kāi)頭的浮點(diǎn)數(shù) |
Number() | NaN | NaN | NaN | 要求整個(gè)字符串是數(shù)字 |
+ 運(yùn)算符 | NaN | NaN | NaN | 同 Number() |
| 正則提取 | 123 | 123.45 | 123 | 靈活但代碼較多 |
推薦使用
對(duì)于 "123 asdf" 這類(lèi)字符串:
- 獲取開(kāi)頭的整數(shù) →
parseInt(str) - 獲取開(kāi)頭的浮點(diǎn)數(shù) →
parseFloat(str) - 安全轉(zhuǎn)換(帶默認(rèn)值):
function safeParseInt(str, defaultValue = 0) {
const num = parseInt(str);
return isNaN(num) ? defaultValue : num;
}
console.log(safeParseInt("123 asdf")); // 123
console.log(safeParseInt("abc")); // 0
console.log(safeParseInt("abc", 100)); // 100
注意事項(xiàng)
- 使用
parseInt()時(shí)最好指定基數(shù),避免八進(jìn)制解析問(wèn)題:
parseInt("010"); // 10(現(xiàn)代JS)或8(舊環(huán)境)
parseInt("010", 10); // 10(推薦指定基數(shù))
- 檢查轉(zhuǎn)換結(jié)果是否為有效數(shù)字:
const num = parseInt("123 asdf");
if (!isNaN(num)) {
console.log("轉(zhuǎn)換成功:", num);
}
對(duì)于 "123 asdf",最合適的方法是 parseInt() 或 parseFloat(),它們會(huì)解析字符串開(kāi)頭的數(shù)字部分。
到此這篇關(guān)于在JavaScript中把"123 asdf"轉(zhuǎn)化成數(shù)字的幾種方法的文章就介紹到這了,更多相關(guān)JavaScript把"123 asdf"轉(zhuǎn)成數(shù)字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS腳本實(shí)現(xiàn)定時(shí)到網(wǎng)站上簽到/簽退功能
這篇文章主要介紹了JS腳本實(shí)現(xiàn)定時(shí)到網(wǎng)站上簽到/簽退功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
bootstrapValidator自定驗(yàn)證方法寫(xiě)法
這篇文章主要為大家詳細(xì)介紹了bootstrapValidator自定驗(yàn)證方法寫(xiě)法,研究bootstrapValidator驗(yàn)證,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
js實(shí)現(xiàn)隨機(jī)點(diǎn)名程序
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)隨機(jī)點(diǎn)名程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
javascript調(diào)試之DOM斷點(diǎn)調(diào)試法使用技巧分享
在開(kāi)發(fā)中,偶爾會(huì)遇到類(lèi)似這樣的問(wèn)題:頁(yè)面上的一個(gè)DOM元素被改了屬性,但是我們卻不知道是哪個(gè)腳本更改的2014-04-04
Bootstrap組合上、下拉框簡(jiǎn)單實(shí)現(xiàn)代碼
這篇文章主要介紹了Bootstrap組合上、下拉框的簡(jiǎn)單實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
bootstrap-table formatter 使用vue組件的方法
Bootstrap table是國(guó)人開(kāi)發(fā)的一款基于 Bootstrap 的 jQuery 表格插件,通過(guò)簡(jiǎn)單的設(shè)置,就可以擁有強(qiáng)大的單選、多選、排序、分頁(yè),以及編輯、導(dǎo)出、過(guò)濾(擴(kuò)展)等等的功能。這篇文章重點(diǎn)給大家介紹bootstrap-table formatter 使用vue組件的方法,感興趣的朋友一起看看2019-05-05

