[‘1’, ‘2’, ‘3’].map(parseInt) what & why ?
让我们先来了解一下map函数和 parseInt吧
map
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。array.map(function(currentValue,index,arr), thisValue)
接收的是一个函数 函数接收的是三个参数
function(currentValue, index,arr)
currentValue是循环到当前的元素 index是当前元素的下标 arr是原数组
thisValue
可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。
如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象
parseInt
parseInt(string, radix) 两个参数
string 必需。要被解析的字符串。
radix
可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
那么重点来了,了解了这两个函数后是不是就水到渠成了
那么[‘1’, ‘2’, ‘3’].map(parseInt)就是相当于
[‘1’, ‘2’, ‘3’].map((item,index)=>parseInt(item,index)) 了,
这就简单了吧
parseInt(‘1’, 0) //radix为0时,且string参数不以“0x”和“0”开头时,按照10为基数处理。这个时候返回1
parseInt(‘2’, 1) //基数为1(1进制)表示的数中,最大值小于2,所以无法解析,返回NaN
parseInt(‘3’, 2) //基数为2(2进制)表示的数中,最大值小于3,所以无法解析,返回NaN
所以就会得到一个这样的数组[1,NaN,NaN]