淺談JavaScript中的parseInt()的妙用
起因
寫這篇博客的起因是今天在刷leetcode的每日一題,是一道字符串轉換整數 (atoi)的題,感興趣的話可以點擊題目名稱去看一下具體描述。在我多次debug終於成功提交之後,去評論區看瞭一下大佬們的解題思路,看完之後不禁感嘆javascript中原來parseInt( )已經這麼優秀瞭啊。這告訴我瞭一個道理,我們自認為再熟悉不過的api,可能我們並沒有真正意義上的掌握。”
我的解答
/** * @param {string} str * @return {number} */ var myAtoi = function(str) { str = str.trim(); //截取字符串第一個字符 var firstChar = str.charAt(),res = '',regSymbol = /^[\-\+]{1}/,regNumber = /^[0-9]{1}/; if(!regSymbol.test(firstChar) && !regNumber.test(firstChar)){ return 0; } //第一個字符為+或者- 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; } //第一個字符為數字 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; } };
通過對比,我們瞭解到javascript中的parseInt()已經做瞭截取空字符串、首字母判斷、number類型結果返回等一系列操作。剛好與今天的每日一題的需求完美契合,使用parseInt()來解決這個題目簡直不要太爽。
到此這篇關於淺談JavaScript中的parseInt()的妙用的文章就介紹到這瞭,更多相關JavaScript parseInt()內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- C++實現LeetCode(8.字符串轉為整數)
- JavaScript實現文本相似度對比
- JavaScript中隨機數方法 Math.random()
- 關於Integer.parseInt()方法的使用
- javascript代碼簡寫的幾種常用方式匯總