你的第一反应结果是否是[1,2,3],可是真正的结果是[1, NaN, NaN]。为何呢?首先看一下数组中的map方法。数组
引入MDN的解释,map()方法建立一个新数组,其结果是该数组中的每一个元素都调用一个提供的函数后返回的结果。bash
var arr = [1, 2, 3];
var arr1 = arr.map(x => x+1);
console.log(arr1); // 2,3,4
复制代码
能够看出map方法中接受一个函数function,用来处理遍历数组中的每个元素。函数
new_array = [].map(function callback(currentValue[,index[,array]]){ // Return element for new_array }[, thisArg]);
复制代码
这个callback一共能够接收三个参数,其中第一个参数表明当前被处理的元素,第二个参数表明该元素的索引。this
parseInt是用来解析字符串,使字符串成为指定基数的整数,parseInt的基本语法,spa
parseInt(string, radix)
复制代码
接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数。radix是一个介于2-36之间的整数,返回解析后的整数值。 若是被解析参数的第一个字符没法被转化成数值类型,则返回 NaNcode
praseInt('111') // 111
parseInt('111', 0) // 111
// radix为0时,且string参数不以“0x”和“0”开头时,按照10为基数处理
parseInt('111', 1) // NaN 【2 <= radix <= 36】
parseInt('111', 2) // 7
复制代码
从上面能够看出根据指定不一样的radix,返回不一样的值。索引
radix参数为n将会把第一个参数看做是一个数的n进制表示,而返回的值则是十进制。element
parseInt('123', 5) // 将'123'看做5进制数,返回十进制数38 => 1*5^2 + 2*5^1 + 3*5^0 = 38
复制代码
下面咱们来分析一下['1', '2', '3'].map(parseInt);字符串
map函数返回的是一个数组,因此最后结果为[1, NaN, NaN]string