map方法
- 参数必须是函数,非函数会报错
- 参数1 – 回调(回调参数:当前项,索引,数组自身),参数2 – 回调中的this指向
- arr.map(parseInt) – parseInt 就是遍历每项后的回调,他的的参数就是每项 和 索引
parseInt()
- parseInt则是
用来解析字符串的
,使字符串成为指定基数的整数
。 - parseInt(string, radix) 接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数。
- 当 radix 为
0 、false、null、undefined
,如果 string 不以“0x”和“0”开头时,一般默认为十进制
- radix 为
介于 2-36之间,基数为 1 无效,所以无法解析,返回 NaN
- 第一个字符不为数字或者大于等于进制数,就会返回 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]
- 当 radix 为 0 、false、null、undefined,如果 string 不包含 0x,一般默认为十进制。
parseInt('1', 0) parseInt('1') parseInt('1', false) parseInt('1', null) //上面的返回结果都为 1.
- radix 为介于 2-36之间,基数为 1 无效,所以无法解析,返回 NaN
parseInt('0', 1) parseInt('2', 1) //上面的返回结果都为 NAN.
- 第一个字符不为数字或者大于等于进制数,就会返回 NAN。
parseInt('dd', 2) parseInt(null, 2) parseInt('2', 2) parseInt('3',2) parseInt('4', 4) parseInt('5', 4) //上面的返回结果都为 NAN.
- str左起第一个数一旦大于进制数radix,立马返回 NaN
str左起第一个数一旦小于进制数radix,就去做运算,直到遇到一个大于等于radix,就不加了哈!parseInt('3', 2); // 由于 2的二进制数是 0 和 1 组成的,所以要返回 NaN parseInt('123', 3); //等于 parseInt('12', 3); - 5 左起第一个数小于基数,正常运算,直到遇到一个大于等于技术,停止
关于进制
2进制,基数只能为 0,1
3进制,基数为0,1,2
4进制,基数为0,1,2,3
5进制,基数为0,1,2,3,4
…
8进制,基数为0,1,2,3,4,5,6,7
10进制,基数为0,1,2,3,4,5,6,7,8,9
16进制,基数为0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
发现一个规律,基数们都小于 < 进制数
如 2进制数 的基数 0 和1 都小于2
同理的题
['10','10','10','10','10'].map(parseInt);
// [10, NaN, 2, 3, 4]