[‘1‘, ‘2‘, ‘3‘].map(parseInt)的结果

今天在做bilibili的前端面试题时,遇到了一道很有意思的题目
[‘1’, ‘2’, ‘3’].map(parseInt) = ___
A.[1, 2, 3]
B.[0, 1, 2]
C.[NaN, NaN, NaN]
D.[1, NaN, NaN]

函数解析

数组的map()方法
函数格式:
array.map(function(currentValue,index,arr), thisValue)

	·currentValue表示当前数据的值
	·index表示当前数据的索引(理所当然,第一个为‘0’)
	·arr是指当前数组

数组的map()方法就是将该数组内的元素,按顺序传入到map函数中写的方法function()(如Math.sqrt()求根号),最后返回一个经function()操作后的数组

parseInt()方法
老朋友了,经常用于将字符串内的数字转化为整形,如:“19990504”–>19990504(一千九百九十九万零五百零四)

但其实parseInt可以有两个参数,当只传一个参数时
默认第二个参数为0

即:parseInt(‘10086’,0),0就代表十进制,也就是说,第二个参数表明目标数据的进制

那么,当数据不符合进制限制的时候,就会返回NaN

回到问题

[‘1’, ‘2’, ‘3’].map(parseInt),就是把[‘1’, ‘2’, ‘3’],依次传递给parseInt。map函数干了三件事,把数组的数据和索引依此传入
parseInt被调用了三次,分别是:

·parseInt('1',0);//传递进去的参数实际上就是数组里的'1',
				   和第一个元素的索引 index=0。
·parseInt('2',1);//依此类推
·parseInt('3',2);//parseInt只能接收两个参数,所以会忽略map的剩余参数

所以三次调用得出的结果分别是:1,NaN,NaN,
得到数组[1, NaN, NaN]。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值