['1','2','3'].map(parseInt) what & why

219 阅读1分钟

parseInt()

parseInt(string, radix)将一个字符串转换为radix进制的整数,radix为介于2-36之间的整数。当radix小于2或者大于36时,或者第一个非空格字符不能转换为数字时,返回NaN。

radix

radix参数为undefined,为0或是没有指定的情况下,JavaScript将做如下处理:

· 如果字符串string以"0x"或者"0X"开头,radix被设置为16
· 如果字符串string以"0"开头,radix可能会被不确定的设置为8或10
· 字符串string以其他任何值开头时,radix设置为10

Array.prototype.map()

map方法不修改原数组的情况下创建一个新数组,给原数组中的每个元素都按顺序调用一次callback函数,每次调用callback后的返回值作为新数组的元素。

callback

生成新数组元素的函数,使用三个参数,其中后两个时可选的,分别是:

currentValue
    callback数组中正在处理的当前元素
index (可选)
    callback数组中正在处理的当前元素的索引
array (可选)
    map方法调用的数组

thisArg

map方法的可选参数,作为map的第二个参数,可设置执行callback函数时的this值

默认传参

由于函数parseInt声明时具有两个入参,所以callback函数会传入第一个和第二个参数。

//parseInt声明时是这样的 function parseInt(string, radix)
['1','2','3'].map(parseInt)

//所以上面的代码等价于
['1','2','3'].map((item, index) => {
    return parseInt(item, index)
})

如果需要循环访问字符串数组,并把它逐个转成数字

['1','2','5','8'].map(Number);
//得到一个新数组 [1,2,5,8]