js 实现parseint


实现 JavaScript 的 parseInt 功能
基本功能实现
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)。






