淺談JavaScript中的parseInt()的妙用
起因
寫(xiě)這篇博客的起因是今天在刷leetcode的每日一題,是一道字符串轉(zhuǎn)換整數(shù) (atoi)的題,感興趣的話可以點(diǎn)擊題目名稱(chēng)去看一下具體描述。在我多次debug終于成功提交之后,去評(píng)論區(qū)看了一下大佬們的解題思路,看完之后不禁感嘆javascript中原來(lái)parseInt( )已經(jīng)這么優(yōu)秀了啊。這告訴我了一個(gè)道理,我們自認(rèn)為再熟悉不過(guò)的api,可能我們并沒(méi)有真正意義上的掌握?!?/p>
我的解答
/** * @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; } };
通過(guò)對(duì)比,我們了解到j(luò)avascript中的parseInt()已經(jīng)做了截取空字符串、首字母判斷、number類(lèi)型結(jié)果返回等一系列操作。剛好與今天的每日一題的需求完美契合,使用parseInt()來(lái)解決這個(gè)題目簡(jiǎn)直不要太爽。
到此這篇關(guān)于淺談JavaScript中的parseInt()的妙用的文章就介紹到這了,更多相關(guān)JavaScript parseInt()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js獲取下拉列表框<option>中的value和text的值示例代碼
本篇文章主要是對(duì)js獲取下拉列表框<option>中的value和text的值示例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-01-01javascript實(shí)現(xiàn)textarea中tab鍵的縮排處理方法
這篇文章主要介紹了javascript實(shí)現(xiàn)textarea中tab鍵的縮排處理方法,涉及javascript處理鼠標(biāo)事件及頁(yè)面元素的相關(guān)技巧,需要的朋友可以參考下2015-06-06JavaScript獲得url所有參數(shù)鍵值表的方法
這篇文章主要介紹了JavaScript獲得url所有參數(shù)鍵值表的方法,實(shí)例分析了javascript操作URL的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03javascript實(shí)現(xiàn)隨機(jī)顯示星星特效
這篇文章主要介紹了javascript實(shí)現(xiàn)隨機(jī)顯示星星特效的相關(guān)資料,以一個(gè)完整實(shí)例形式較為詳細(xì)的分析了js實(shí)現(xiàn)隨機(jī)顯示星星特效的實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-01-01微信小程序中的店鋪評(píng)分組件及vue中用svg實(shí)現(xiàn)的評(píng)分顯示組件
這篇文章主要介紹了微信小程序之店鋪評(píng)分組件及vue中用svg實(shí)現(xiàn)的評(píng)分顯示組件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11JS實(shí)現(xiàn)的一個(gè)簡(jiǎn)單的Autocomplete自動(dòng)完成例子
這篇文章主要介紹了JS實(shí)現(xiàn)的一個(gè)簡(jiǎn)單的Autocomplete自動(dòng)完成例子,需要的朋友可以參考下2014-04-04JS使用正則表達(dá)式驗(yàn)證身份證號(hào)碼
這篇文章主要介紹了JS使用正則表達(dá)式驗(yàn)證身份證號(hào)碼的相關(guān)資料,需要的朋友可以參考下2017-06-06