今日一题(map函数)2019年7月12日
提问:['1', '2', '3'].map(parseInt) 输出什么
来看一下map函数的语法
var new_array = arr.map(function callback(currentValue[, index[, array]])
{
// Return element for new_array
}[, thisArg])
callback
生成新数组元素的函数,使用三个参数:
callback
生成新数组元素的函数,使用三个参数: currentValue
callback
数组中正在处理的当前元素。
index
可选 callback
数组中正在处理的当前元素的索引。
array
可选 callback
map
方法被调用的数组。
thisArg
可选执行 callback
函数时使用的this
值。
thisArg
可选执行 callback
函数时使用的this
值。
再来看一下parseInt方法
语法: parseInt(string, radix)
参数 | 描述 |
---|---|
string | 必需。要被解析的字符串。 |
radix |
可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。 如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。 如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN |
了解这两个函数后,我们可以模拟一下运行情况
parseInt('1', 0) //radix为0时,且string参数不以“0x”和“0”开头时,按照10为基数处理。这个时候返回1
parseInt('2', 1) //基数为1(1进制)表示的数中,最大值小于2,所以无法解析,返回NaN
parseInt('3', 2) //基数为2(2进制)表示的数中,最大值小于3,所以无法解析,返回NaN
map函数返回的是一个数组,所以最后结果为[1, NaN, NaN]
那么什么时候结果为[1,2,3] 呢
创建一个函数
function mapFun (ele) {
return parseInt(ele,10)
}
["1", "2", "3"].map(mapFun) // [1,2,3]