madfour / blog-docs

一个备忘录罢了
https://madfour.cn
MIT License
5 stars 0 forks source link

['1', '2', '3'].map(parseInt) 的结果是什么 ? why? #1

Open madfour opened 3 years ago

madfour commented 3 years ago

parseInt

parseInt(string, radix) 函数解析一个字符串参数,并返回一个指定基数的整数 (数学系统的基础)。

string 要被解析的值。如果参数不是一个字符串,则将其转换为字符串(使用 ToString 抽象操作)。字符串开头的空白符将会被忽略。(要将一个数字转换为特定的 radix 中的字符串字段,请使用 thatNumber.toString(radix)函数。)

radix 一个介于2和36之间的整数(数学系统的基础),表示上述字符串的基数。

返回值 返回一个整数或NaN

 parseInt(123);     // 123
 parseInt(123, 10); // 123
 parseInt(123, 5);  // 8 -> 将'123'看作5进制数,返回十进制数38 => 1*5^2 + 2*5^1 + 3*5^0 = 38

注意:radixundefined,或者radix为 0 或者没有指定的情况下,JavaScript 作如下处理:

所以最后结果为[1, NaN, NaN]

如何在现实世界中做到这一点

如果您实际上想要循环访问字符串数组, 该怎么办? map()然后把它换成数字?使用编号!

 ['10','10','10','10','10'].map(Number);
 // [10, 10, 10, 10, 10]