JavaScript中parseInt()的妙用与字符串转换整数(atoi)实现

作者:开源拾贝时间:2026-10-25 02:48:59浏览:156

本文通过LeetCode字符串转换整数(atoi)题目,对比手动实现与JavaScript内置parseInt()方法的差异。深入解析parseInt()在截取空字符串、首字符判断及数值范围处理上的优势,展示如何利用该API简化代码逻辑并提高开发效率。

起因

撰写本文的灵感来源于今日完成LeetCode每日一题——字符串转换整数 (atoi)。该题目要求将字符串转换为32位有符号整数,具体规则可参考原题描述。在经历多次调试并成功提交后,我查阅了社区中其他用户的解题方案,惊讶地发现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类型结果等逻辑。这些功能恰好与atoi题目的需求高度一致,使用parseInt()来解决该问题不仅简洁,而且高效。

到此这篇关于浅谈JavaScript中的parseInt()的妙用的文章就介绍到这了,更多相关JavaScript parseInt()内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

作者最新文章