前端经典面试题[“1“,“2“,“3“].map(parseInt)解析

本文详细解读map函数在数组操作中的作用,并探讨parseInt的进制转换规则,以['1','2','3'].map(parseInt)为例,揭示其在实际开发中的关键细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、此面试题考察的内容

  • 对于数组map函数的理解以及使用
  • 对于parseInt的转换规则是否理解

对于map在实际开发中经常用到,这方法可能不是重点考察的,主要是对于parseInt的转换规则是否有全面理解

二、map和parseInt解析

  1. map解析

首先是map函数的使用,在遍历数组时传入一个callback回调函数,参数是数组值和下标值,然后将回调函数结果放进新数组并返回。代码如下:

//["1","2","3"].map(parseInt)

["1","2","3"].map(callback)

结果:[
	callback("1",0),
	callback("2",1),
	callback("3",2),
]

//可以写为
["1","2","3"].map((item,index)=>{
	return parseInt(item,index)
})

结果:[
	parseInt("1",0),
	parseInt("2",1),
	parseInt("3",2),
]

2 parseInt解析

对于这个函数可能大家使用的是经常见到的进制转换,若是非常见进制或者非进制的规则就非常陌生了。

parseInt的进制规则如下:

1.parseInt(string[,radix]),parseInt接收两个参数,
2.string:将要被解析的值。该值需要为字符串,则会使用toString的方式将其转换为字符串。字符串前后的空白符将会被忽略
3.radix:表示字符串的转换基数,从2到36。指定radix为2,则表示将按照二进制的方式解析字符串;如果指定为10,则将按照10进制的方式解析字符串。需要注意的是,10不是radix的默认值,至于为什么,后文有详细的阐述。
4.如果输入的字符串的非空格字符以‘0x’或‘0X’开头,则radix会假定为16,字符串剩余的字符将按照16进制进行解析,如果输入的字符串的非空格字符以‘0’开头,radix可能为8或10,具体的根据不同的浏览器版本有所差别,但是ES5中规定,此种情况radix为10。输入的字符串的非空格字符是其他开头,则radix为10。

总结:

1.radix若是传递的是0、NaN、undefined,则分两种情况:
第一:若string以“0x”或“0X”开头,则默认为16进制
第二:若不是第一种情况则会10进制

2.若进制小于2或者大于36,就会输入NaN
3.若是2-36,而string是无效数字,则转为NaN

三、[“1”,“2”,“3”].map(parseInt)解析

	parseInt("1",0),
	parseInt("2",1),
	parseInt("3",2),

1、parseInt(“1”,0)由于传入的radix是0,而string非“0x”或“0X”则进制为十进制,parseInt(“1”,0)则为parseInt(“1”,10),输入1

2、parseInt(“2”,1)由于radix是1,不在2-36区间,则输入NaN。

3、parseInt(“3”,2)的radix为2,在2-36区间,又因为在二进制中“3”是不存在的,为无效数字,则输出NaN

此时本题目已经解出来了,输入为[1,NaN,NaN]

四、思考题

1.下方题目将会输入上面

1.["0x11","0X12","1"].map(parseInt) //?

2.parseInt('013',2)   //?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

名字还没想好☜

祝福你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值