关于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) 将字符串解析为十进制数字。