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

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]

参考:[‘1’, ‘2’, ‘3’].map(parseInt) what & why ?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值