淺談JavaScript中的parseInt()的妙用
寫這篇博客的起因是今天在刷leetcode的每日一題,是一道字符串轉(zhuǎn)換整數(shù) (atoi)的題,感興趣的話可以點(diǎn)擊題目名稱去看一下具體描述。在我多次debug終于成功提交之后,去評(píng)論區(qū)看了一下大佬們的解題思路,看完之后不禁感嘆javascript中原來parseInt( )已經(jīng)這么優(yōu)秀了啊。這告訴我了一個(gè)道理,我們自認(rèn)為再熟悉不過的api,可能我們并沒有真正意義上的掌握。”
我的解答/** * @param {string} str * @return {number} */var myAtoi = function(str) { str = str.trim(); //截取字符串第一個(gè)字符 var firstChar = str.charAt(),res = ’’,regSymbol = /^[-+]{1}/,regNumber = /^[0-9]{1}/; if(!regSymbol.test(firstChar) && !regNumber.test(firstChar)){return 0; } //第一個(gè)字符為+或者- if(regSymbol.test(firstChar)){var sliceStr = str.slice(1,str.length);for(var i=0;i<sliceStr.length;i++){ if(regNumber.test(sliceStr.charAt(i))){res += sliceStr.charAt(i); }else{break; }}(res.length) ? res = parseInt(firstChar + res) : res = 0;if(firstChar == ’-’ && res < Math.pow(-2,31)){ res = Math.pow(-2,31);}if(firstChar == ’+’ && res > Math.pow(2,31) - 1){ res = Math.pow(2,31) - 1;}return res; } //第一個(gè)字符為數(shù)字 if(regNumber.test(firstChar)){var sliceStr = str;for(var i=0;i<sliceStr.length;i++){ if(regNumber.test(sliceStr.charAt(i))){res += sliceStr.charAt(i); }else{break; }}if(parseInt(res) > Math.pow(2,31) - 1){ res = Math.pow(2,31) - 1;}return res; }}; 大佬的解答
/** * @param {string} str * @return {number} */var myAtoi = function(str) { const number = parseInt(str, 10); if(isNaN(number)) {return 0; } else if (number < Math.pow(-2, 31) || number > Math.pow(2, 31) - 1) {return number < Math.pow(-2, 31) ? Math.pow(-2, 31) : Math.pow(2, 31) - 1; } else {return number; }};
通過對(duì)比,我們了解到j(luò)avascript中的parseInt()已經(jīng)做了截取空字符串、首字母判斷、number類型結(jié)果返回等一系列操作。剛好與今天的每日一題的需求完美契合,使用parseInt()來解決這個(gè)題目簡(jiǎn)直不要太爽。
到此這篇關(guān)于淺談JavaScript中的parseInt()的妙用的文章就介紹到這了,更多相關(guān)JavaScript parseInt()內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 詳解Android studio 動(dòng)態(tài)fragment的用法2. 編程語言PHP在Web開發(fā)領(lǐng)域的優(yōu)勢(shì)在哪?3. 什么是python的自省4. Spring Boot和Thymeleaf整合結(jié)合JPA實(shí)現(xiàn)分頁效果(實(shí)例代碼)5. 解決Android studio xml界面無法預(yù)覽問題6. 基于android studio的layout的xml文件的創(chuàng)建方式7. Android如何加載Base64編碼格式圖片8. Springboot Druid 自定義加密數(shù)據(jù)庫密碼的幾種方案9. Vue封裝一個(gè)TodoList的案例與瀏覽器本地緩存的應(yīng)用實(shí)現(xiàn)10. 圖文詳解vue中proto文件的函數(shù)調(diào)用

網(wǎng)公網(wǎng)安備