# ❓['1', '2', '3'].map(parseInt)
what & why ?
首先我们看这道题目相对来说是挺简单的,我们先来分析一下:
- 目标值是一个字符串数组
- 对目标做
map
操作,方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果- callback 函数会有三个参数传入
currentValue
:数组中正在处理的当前元素index
:数组中正在处理的当前元素的索引array
:方法调用的原数组(这里就是指字符串数组
- thisArg(可选):执行
callback
函数时值被用作this
- callback 函数会有三个参数传入
- map 操作传入的是
parseInt
函数,方法依据指定基数 [ 参数 radix 的值],把字符串 [ 参数 string 的值] 解析成整数- string:要解析的值。 如果此参数不是字符串,则使用
ToString
抽象操作将其转换为字符串。忽略此参数中的前导空格 - radix:(可选)一个介于
2
到36
之间的整数,代表字符串的基数(数学数字系统中的基)。⚠️这并不是默认为10
。如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN
- string:要解析的值。 如果此参数不是字符串,则使用
那么分析到这里结果就显而易见了。
["1", "2", "3"].map(parseInt);
// map运行过程
// 第1次遍历
parseInt("1", 0); // 返回 1
// 第2次遍历
parseInt("2", 1); // 返回 NaN
// 第3次遍历
// 根据 `2` 基数去转换,单个位数大于基数,报错返回 NaN
parseInt("3", 2); // 返回 NaN
// 最终得到的结果
// [1, NaN, NaN]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14