欢迎来到代码驿站!

JavaScript代码

当前位置:首页 > 网页前端 > JavaScript代码

浅谈JavaScript中的parseInt()的妙用

时间:2021-12-24 11:06:59|栏目:JavaScript代码|点击:

起因

写这篇博客的起因是今天在刷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()来解决这个题目简直不要太爽。

上一篇:对Layer弹窗使用及返回数据接收的实例详解

栏    目:JavaScript代码

下一篇:javascript回调函数的概念理解与用法分析

本文标题:浅谈JavaScript中的parseInt()的妙用

本文地址:http://www.codeinn.net/misctech/187923.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有