Web前端面试指导(三十六):["1", "2", "3"].map(parseInt) 答案是多少?

题目点评

这道题目要求对ECMAScript5版本的函数比较熟悉才能够正确的解答出来,重点考察的就是map函数,这个函数就是ECMAScript5(最新版本)新增的,在加上parseInt这个函数本身也很难理解,该题目难易程度偏难!

map方法的使用 

语法

array.map(callback[,thisArg]);

对数组的重新映射。将数组的各个元素依次传入到回调函数callback,回调函数返回的结果依次替换原数组对应的元素。

回调函数callback 会被自动传入三个参数:数组元素,元素索引,原数组本身。

map(function(T=,number=, Array.<T>=))

T:表示元素

number:元素的下标

Array.<T>:表示数组原始值

<T>看到这个越来越感觉JavaScript在向OOP编程语言Java、C#靠近。个人感想,不由自发,看不懂的可以忽略。 

parseInt()方法的使用

语法

parseInt(s,radix)解析一个字符串,并返回一个整数。

参数

s:表示字符串

radix:表示其它进制转十进制的基数,范围在2~36,不在这个范围的返回NaN。该参数可以省略或为0,这种情况会根据字符串的开头来判断基数,规则如下:

1)字符串以"0x" 开头,基数为16

2字符以"0"开头,版本低于ECMAScript 5的,基数为8。版本为ECMAScript 5的,基数为10

3)以 1 ~ 9 的数字开头,基数为10。

基数是什么?

基数:是其它进制转十进制数的公式里的组成部分,公式如下:

位数1 基数0+ 位数2 基数1+ 位数3 基数2+  位数n 基数n-1

以二进制101转十进制为例,二进制的基数为2。(估计看到这里的很多同学几乎晕倒,看不明白了,看不明白的请看视频演示和讲解 http://www.chuanke.com/3885380-190205.html 

百位

十位

个位

 

1

0

1

 

2

1

0

权重

101=1*20+0*21+1*22=1+0+4=5 

所以 parseInt(“101”,2)返回5

由此我们可以推到出parseInt(“210”,3)的结果

parseInt("210",3)=0*30+1*31+2*32=0+3+18=21 

懵逼了:2~36进制都是有效的,我们只听过二进制、八进制、十进制、十六进制,三十六进制是什么鬼?请看parseInt函数的详解【任你百度都没有看不懂的,老曹给你做详解便知其奥妙】。 

题目的结果推导

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

[0]=parseInt(“1”,0);//1*100=1*1=1

[1]=parseInt(“2”,1);//radix不在2~36的返回NaN

[2]=parseInt(“3”,2);//二进制数没有3,只有0 1 ,所以NaN 

所以最终的结果是 [1,NaN,NaN]

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智学无忧-老曹

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值