Number.parseInt() 配合 map() 可高效批量转换字符串数组进制,需显式传入 radix(2–36)避免默认解析歧义;支持统一进制固定值或混合进制配对处理,并建议结合 trim() 和 isNaN() 做容错校验。

直接用 Number.parseInt() 配合 Array.prototype.map() 可以高效完成字符串数组的批量进制转换,关键在于正确传入进制参数(radix)。
理解 Number.parseInt() 的第二个参数
Number.parseInt(string, radix) 的第二个参数指定解析时的进制(2–36)。省略时默认为 10,但容易出错(例如以 "0x" 开头会自动识别为 16 进制,"0" 开头在旧模式下可能被误判为 8 进制)。显式传入 radix 是安全且明确的做法。
对字符串数组按统一进制批量转换
当所有字符串使用相同进制(如全部是 16 进制)时,可直接在 map 回调中固定 radix 值:
const hexStrings = ['ff', 'a0', '1f']; const decimals = hexStrings.map(x => Number.parseInt(x, 16)); // → [255, 160, 31]
对混合进制字符串分别指定进制
若每个字符串对应不同进制(如 ['1010', 'ff', '12'] 分别表示二、十六、八进制),需将进制信息与字符串配对,再映射处理:
const mixed = [
{ value: '1010', radix: 2 },
{ value: 'ff', radix: 16 },
{ value: '12', radix: 8 }
];
const result = mixed.map(item => Number.parseInt(item.value, item.radix));
// → [10, 255, 10]
注意边界与容错处理
Number.parseInt() 遇到无法解析的字符串(如 'xyz')返回 NaN。批量转换时建议加入校验:
- 用
isNaN()过滤或标记无效结果 - 结合
String.prototype.trim()去除首尾空格,避免解析失败 - 确保 radix 是合法整数(2–36),否则返回
NaN
const inputs = [' 1a ', 'zz', '10'];
const safeParse = (str, r) => {
const trimmed = str?.trim() || '';
const n = Number.parseInt(trimmed, r);
return isNaN(n) ? null : n;
};
const parsed = inputs.map(x => safeParse(x, 16)); // → [26, null, 16]

















