Skip to main content

关于parseInt进制

['1', '2', '3'].map(parseInt) 的返回值是 [1, NaN, NaN]。 这与 parseInt 函数的工作方式和 map 方法的参数传递方式有关。 parseInt 函数的签名是 parseInt(string, radix),其中 string 是要解析的字符串,radix 是解析时要使用的基数(进制)。 而 map 方法的回调函数接受三个参数:当前元素、当前索引、原数组。当 map 调用 parseInt 时,它会传递当前元素作为第一个参数,当前索引作为第二个参数。

让我们看看每次调用 parseInt 的具体情况:

  1. parseInt('1', 0) - 0 表示按照给定值自动判断进制,所以会将 '1' 解析为十进制,结果为 1。
  2. parseInt('2', 1) - 1 不是有效的进制,因此返回 NaN。
  3. parseInt('3', 2) - 2 是二进制,但 '3' 不是有效的二进制数字,因此返回 NaN。

因此,最终的返回值是 [1, NaN, NaN]。如果你想将字符串数组转换为数字数组,可以使用 map 的回调函数中的第二个参数来指定进制,例如:

['1', '2', '3'].map(num => parseInt(num, 10));
// 输出: [1, 2, 3]

在这里,parseInt(num, 10) 将字符串解析为十进制数字。