关于parseInt进制
['1', '2', '3'].map(parseInt)
的返回值是 [1, NaN, NaN]
。
这与 parseInt
函数的工作方式和 map
方法的参数传递方式有关。
parseInt
函数的签名是 parseInt(string, radix)
,其中 string
是要解析的字符串,radix
是解析时要使用的基数(进制)。
而 map
方法的回调函数接受三个参数:当前元素、当前索引、原数组。当 map
调用 parseInt
时,它会传递当前元素作为第一个参数,当前索引作为第二个参数。
让我们看看每次调用 parseInt
的具体情况:
parseInt('1', 0)
- 0 表示按照给定值自动判断进制,所以会将 '1' 解析为十进制,结果为 1。parseInt('2', 1)
- 1 不是有效的进制,因此返回 NaN。parseInt('3', 2)
- 2 是二进制,但 '3' 不是有效的二进制数字,因此返回 NaN。
因此,最终的返回值是 [1, NaN, NaN]
。如果你想将字符串数组转换为数字数组,可以使用 map
的回调函数中的第二个参数来指定进制,例如:
['1', '2', '3'].map(num => parseInt(num, 10));
// 输出: [1, 2, 3]
在这里,parseInt(num, 10)
将字符串解析为十进制数字。