当前位置:首页 > JavaScript

js 实现parseint

2026-04-06 09:38:35JavaScript

实现 JavaScript 的 parseInt 功能

基本功能实现

parseInt 的核心功能是将字符串转换为整数,忽略前导空格,支持正负号,并处理进制转换。

js 实现parseint

function myParseInt(str, radix = 10) {  
    // 去除前导空格  
    let i = 0;  
    while (str[i] === ' ') i++;  

    // 处理正负号  
    let sign = 1;  
    if (str[i] === '+') i++;  
    else if (str[i] === '-') {  
        sign = -1;  
        i++;  
    }  

    // 处理进制  
    if (radix === undefined || radix === 0) {  
        radix = 10;  
        if (str[i] === '0') {  
            if (str[i + 1] === 'x' || str[i + 1] === 'X') {  
                radix = 16;  
                i += 2;  
            } else {  
                radix = 8;  
                i++;  
            }  
        }  
    }  

    // 解析数字  
    let num = 0;  
    while (i < str.length) {  
        const c = str[i].toLowerCase();  
        let digit;  
        if (c >= '0' && c <= '9') digit = c.charCodeAt(0) - '0'.charCodeAt(0);  
        else if (c >= 'a' && c <= 'z') digit = c.charCodeAt(0) - 'a'.charCodeAt(0) + 10;  
        else break;  

        if (digit >= radix) break;  
        num = num * radix + digit;  
        i++;  
    }  

    return num * sign;  
}  

边界情况处理

  • 非字符串输入会先转为字符串。
  • 空字符串或非数字开头返回 NaN
  • 超出进制范围的字符会终止解析。
function myParseInt(str, radix = 10) {  
    if (typeof str !== 'string' && typeof str !== 'number') return NaN;  
    str = String(str).trim();  
    if (!str.length) return NaN;  

    // 其余逻辑同上  
    // ...  
}  

测试示例

console.log(myParseInt("123"));       // 123  
console.log(myParseInt("0xFF", 16));  // 255  
console.log(myParseInt("-42"));       // -42  
console.log(myParseInt(" 123 "));     // 123  
console.log(myParseInt("abc"));       // NaN  

该实现覆盖了 parseInt 的主要功能,但未完全模拟 JavaScript 引擎的特殊行为(如 parseInt(0.0000005) 返回 5)。

标签: jsparseint
分享给朋友:

相关文章

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…