复习下 [1,2,3].map(parseInt)

简介: 今天继续来聊一个面试题,平时上班太忙的同学可以活动活动脑子。这个题目只有一行代码,但是知识点不只一个。当然我们的目的不在于做题,而在于解题的过程。通过一步一步的分析,得出合理的答案。

今天继续来聊一个面试题,平时上班太忙的同学可以活动活动脑子。

这个题目只有一行代码,但是知识点不只一个。

当然我们的目的不在于做题,而在于解题的过程。

通过一步一步的分析,得出合理的答案。

看题目


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

没错,就一行

(如果很清楚了可以到此打住)


相信大家都见过这个题

下面是我的解析,如果有错误恳请留言斧正

1.解析


1.  Array.prototype.map()

首先要理解下 map 这个函数,他会返回一个新的数组,结果是数组每个元素都会调用下传入 map 的这个函数而得到的返回值


比如:

1var arr = [1,2,3];
2arr.map(x => x * 2);

新的数组的元素都会*2 ,结果是[2,4,6]

好了,我们已经了解了 map 的基本能力。


但是我们发现传入 map 的函数 - parseInt,我们并没有显示的传入参数,可能我们平常的写法是这样的


1[1,2,3].map((item)=>{
2return parseInt(item)
3})

当然这两种写法所得到的结果是不同的。


以下是 mdn 的说明,

40d110bcf4353dcd4f2fc93888111d93_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.jpg

callback 函数会被自动传入三个参数,(当前数组元素,元素索引 index)

原数组本身这个可以忽略了,因为 parseInt只处理前两个参数,后面的参数会忽略。


所以到这里我们能推算出具体的执行代码


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


2. parseInt 方法


到这里我们确定了上面代码得结果就可以了。

parseInt的第一个参数我们都知道,也经常用。然而第二个参数我们大多会传10,其他值很少传。


所以这里有两种理解-

a.第二个参数表示第一个参数的格式,是10进制还是2进制的

b.第二个参数表示 parseInt 返回的结果是10进制的,还是2进制的

我不知道有没有人会理解成 b 这个解释,开始学前端的时候我就这么认为的。

这里是官方的说明:

cc1bf2586e4ae4db7701a85f6e0b0af1_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

也可以理解成,parseInt 返回的是10进制的自然数,第二个参数是表示的是第一个参数的格式,也就是基数。

那么什么样的基数是合理的呢?

基数不合理或者第一个参数不是数字,返回结果是什么呢?


1d540540a7ad7f91d7e5a26e4ffab4bc_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.jpg


第二个参数:基数是 在2-36之间

那么到这里答案应该就差不多出来了

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

parseInt(1,0) ;

结果是1,参数0会当做是 false 处理,所以会默认是10进制.

parseInt(2,1);

结果是 NaN,因为基数1不合理  但是文档并没有说明这对返回值的影响,经测试是 NaN.

parseInt(3,2);

结果是 NaN,基数是合理范围内,但是3不是2进制。转换失败,结果是 NaN。

到这里解析完成。

3.  总结

虽然只是一行代码,但是关联知识点很多。

  1. 数组map方法 的能力
  2. 数组 map 方法的参数
  3. parseInt 的能力和理解
  4. parseInt基数的理解


目录
相关文章
|
JavaScript 前端开发
[阿里巴巴最新面试题----JavaScript中map(parseInt)的问题]
[阿里巴巴最新面试题----JavaScript中map(parseInt)的问题]
64 0
|
JavaScript 前端开发 索引
[‘1‘, ‘2‘, ‘3‘].map(parseInt)
[‘1‘, ‘2‘, ‘3‘].map(parseInt)
116 0
[‘1‘, ‘2‘, ‘3‘].map(parseInt)
|
前端开发 索引
|
JavaScript
Node.js面试题:map(parseInt)
Node.js面试题:map(parseInt)
133 0
|
Web App开发 JavaScript 前端开发
面试题:['1', '2', '3'].map(parseInt) 输出什么?
面试题:['1', '2', '3'].map(parseInt) 输出什么?
268 0
面试题:['1', '2', '3'].map(parseInt) 输出什么?
|
前端开发 JavaScript 索引
关于面试题:[1, 2, 3].map(parseInt)问题的剖析
最近有小伙伴在公号中咨询了胡哥这道面试题,窃以为是比较有意思的一道面试题,于此分享给各位小伙伴。先把答案给了各位,和你理解的一样吗?!
129 0
|
JavaScript
Node.js面试题:map(parseInt)
Node.js面试题:map(parseInt)
143 0
|
3月前
|
Go 定位技术 索引
Go 语言Map(集合) | 19
Go 语言Map(集合) | 19
|
3月前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用