1、首先我们需要知道:
console.log([1,2,3].map(parseInt));//[1,NaN,NaN]
那么为啥呢?
2、首先了解下map()函数:
对数组的每个元素调用定义的回调函数并返回包含结果的数组
[1,2,3].map(function(a,b,c) {//function 执行时会传入三个参数
//a为当前被传递的元素
console.log(a);//1,2,3
//b为当前被传递元素的索引
console.log(b);//0,1,2
//c为调用map方法的数组
console.log(c);//[1,2,3]
})
3、其次了解下parsent()函数:
parseInt(string,radix)解析一个字符串并返回指定基数的十进制整数,radix是2-36之间的整数,表示被解析的字符串的基数
string :
要被解析的值。如果参数不是一个字符串,则将其转换为字符串。字符串开头的空白符将会被忽略
radix(可选):
从2到36,表示字符串的基数。类如,指定16表示被解析值是十六进制数。请注意,10不是默认值
返回值:
从给定的字符串中解析出一个**整数**,但是当radix小于2或者大于36,或者第一个非空格字符不能转换为数字,返回NaN
4、最后我们再看代码
([1,2,3].map(parseInt));//[1,NaN,NaN]
//相当于:
parseInt('1',0) //1
parseInt('2',1) //NaN
parseInt('3',2) //NaN