关于面试题:[1, 2, 3].map(parseInt)问题的剖析

一、前言

最近有小伙伴在公号中咨询了胡哥这道面试题,窃以为是比较有意思的一道面试题,于此分享给各位小伙伴。先把答案给了各位,和你理解的一样吗?!

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

如果你答案你都明白,请出门左转:React源码/原理了解一下。

二、剖析

这道面试题,本身并不复杂。不能正确回答问题的小伙伴,大多数集中于对parseInt这个函数的不了解或者了解的不全面,下面就由胡哥为大家抽丝剥茧一一讲述。

1. map函数

map()方法创建一个新数组,其结果是该数组中每个元素都调用一个提供的函数后返回的结果。

语法

let newArray = arr.map(function calback(currentValue[, index[, array]]) {
    // Return element for newArray
}[, thisArg])

callback回调函数

参数名 含义 可选
currentValue callback 数组中正在处理的当前元素 必选
index calback 数组中正在处理的当前元素的索引 可选
array map方法调用的数组 可选

thisArg

thisArg,可选参数,支持callback函数时值被用作this

[1, 2, 3].map((v) => {
    return v * v
})
// [1, 4, 9]

2. parseInt函数

parseInt(string, radix)将一个字符串string转为radix进制的整数,radix为介于2-36之间的数。返回值:返回解析后的整数值,如果被无法被转化成数值则返回NaN

参数名 含义 可选 默认值
string 要被解析的值。如果参数不是一个字符串,则将其转为字符串 必选
radix 基数,介于2-36之间 可选 10
parseInt(10) // 10 ---- 10进制的字符串'10'转成10
parseInt(10, 2) // 2 ---- 2进制的字符串’10‘转成2
parseInt(3, 2) // NaN --- 在2进制中不存在3

额外补充:

在基数为 undefined,或者基数为 0 或者没有指定的情况下,JavaScript 作如下处理:

如果字符串 string 以"0x"或者"0X"开头, 则基数是16 (16进制).

如果字符串 string 以"0"开头, 基数是8(八进制)或者10(十进制),那么具体是哪个基数由实现环境决定。ECMAScript 5 规定使用10,但是并不是所有的浏览器都遵循这个规定。因此,永远都要明确给出radix参数的值。

如果字符串 string 以其它任何值开头,则基数是10 (十进制)。

三、见证奇迹的时刻

在完整了解了map和parseInt函数后,我们再来看这道面试题[1, 2, 3].map(parseInt),相当于将数组中元素1, 2, 3依次传入到parseInt中,同时不要忘记了同时传入的参数数组索引index

[1, 2, 3].map(parseInt) 可看做写法为:

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

结果为:[parseInt(1, 0), parseInt(2, 1), parseInt(3, 2)] ===> [1, NaN, NaN]
注意此处的写法为一种方便理解的写法,实际上parseInt就充当了callback。

四、结语

以上就是胡哥关于面试题:[1, 2, 3].map(parseInt)的讲述,欢迎大家关注、留言、分享。

后记

以上就是胡哥今天给大家分享的内容,喜欢的小伙伴记得收藏转发、点击右下角按钮在看,推荐给更多小伙伴呦,欢迎多多留言交流...

胡哥有话说,一个有技术,有情怀的胡哥!京东开放平台首席前端攻城狮。与你一起聊聊大前端,分享前端系统架构,框架实现原理,最新最高效的技术实践!

长按扫码关注,更帅更漂亮呦!关注胡哥有话说公众号,可与胡哥继续深入交流呦!

胡哥有话说

Image placeholder
winter_yu
未设置
  58人点赞

没有讨论,发表一下自己的看法吧

推荐文章
面试题:请解释一下什么是虚拟内存?

内存对于用户来说就是一个字节数组,我们可以根据地址来访问到某个字节或者某些字节:很久之前的内存很久很久之前,一台机器上只放置一个程序,操作系统仅仅作为一个函数库存在。对于内存来说,除去操作系统的代码和

阿里面试题:如何保证缓存与数据库的双写一致性?

作者:你是我的海啸出处:https://blog.csdn.net/chang384915878/article/details/86756463只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只

面试题:如何理解 Linux 的零拷贝技术?

本文讲解Linux的零拷贝技术,云计算是一门很庞大的技术学科,融合了很多技术,Linux算是比较基础的技术,所以,学好Linux对于云计算的学习会有比较大的帮助。本文借鉴并总结了几种比较常见的Linu

BAT大牛推荐开发人员必备Spring源码剖析文档,深度剖析Spring

为什么学习读源码我们每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。

干货满满 | 来自灵魂的拷问-这21道Redis面试题

1、使用redis有哪些好处?速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)支持丰富数据类型,支持string,list,set,sort

两万字的数据库面试题,不看绝对后悔

一、基本概念1.主键、外键、超键、候选键超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。候选键:是最小超

面试题总结:可能是全网最好的MySQL重要知识点

作者:Snailclimb 整理编辑:SegmentFault本文原载于SegmentFault专栏JavaGuide,如侵删。标题有点标题党的意思,但希望你在看了文章之后不会有这个想法——这篇文章是

PHP面试题

是总监面试的我,目前对我来说,是很有难度的。 1个进程执行是1s,10个进程同时执行是多长时间,1万个进程同时执行是多长时间?也是1s吗?我觉得这个问题,涉及到了进程间的切换么? 这两个执行,那个会

Stack Overflow 上最火的一个问题:什么是 NullPointerException

在逛StackOverflow的时候,发现最火的问题竟然是:什么是NullPointerException(java.lang.NullPointerException),它是由什么原因导致的,有没有

Stack Overflow 上 370万浏览量的一个问题:如何比较 Java 的字符串?

在逛StackOverflow的时候,发现了一些访问量像喜马拉雅山一样高的问题,比如说这个:如何比较Java的字符串?访问量足足有370万+,这不得了啊!说明有很多很多的程序员被这个问题困扰过。PS:

一文学会Java死锁和CPU 100% 问题的排查技巧

00本文简介作为一名搞技术的程序猿或者是攻城狮,想必你应该是对下面这两个问题有所了解,说不定你在实际的工作或者面试就有遇到过:第一个问题:Java死锁如何排查和解决?第二个问题:服务器CPU占用率高达

系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路

来源:http://t.cn/EI9JdBu处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU100%,以及FullGC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且

由Linux内核bug引起SSH登录缓慢问题的排查与解决

今年7月,有一位用户反馈,使用该镜像创建出的快杰云主机每次启动时,第一次SSH登录会很慢,有时候需几十秒甚至几分钟才能登录成功,影响了使用体验。经过排查,定位到是Linux内核随机数熵池初始化慢的原因

一个 TCP 接收缓冲区问题的解析

文本作为一个TCP发送缓冲区问题的解析的姊妹篇存在。这次说的是接收缓冲区的问题。问题模型Clinet与Server之间建立一条TCP连接,Server通过SO_RCVBUF选项设置连接的接收缓冲区为2

一个 TCP 发送缓冲区问题的解析

最近遇到一个问题,简化模型如下:Client创建一个TCP的socket,并通过SO_SNDBUF选项设置它的发送缓冲区大小为4096字节,连接到Server后,每1秒发送一个TCP数据段长度为102

Nebula 架构剖析系列(二)图数据库的查询引擎设计

摘要上文(存储篇)说到数据库重要的两部分为存储和计算,本篇内容为你解读图数据库Nebula在查询引擎QueryEngine方面的设计实践。在Nebula中,QueryEngine是用来处理Nebula

Spring Boot 面试,一个问题就干趴下了!

随着SpringBoot使用越来越广泛,SpringBoot已经成为Java程序员面试的知识点,很多同学对SpringBoot理解不是那么深刻,经常就会被几个连环跑给干趴下了!比如下面这一段的Spri

2020年前必须掌握的数据库面试问题~

一、为什么用自增列作为主键1、如果我们定义了主键(PRIMARYKEY),那么InnoDB会选择主键作为聚集索引。如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索

面试问题总结

作为一个一年半Java开发的技术小白面试的心得。在原先公司工作接触nginx、redis等工具。由于工作上对这些工具只做到会用的程度没了解深入。在面试中出现很多笑话(一问三不知的情况都出来)。今天做个

我是怎么倒在美团第三轮面试之下的

说实话,之前我从来没想过能有大厂会给我机会让我去面试,一个专科生,不是科班出身,这些硬性条件好像都没有一个符合的,但是却获得了美团的面试机会。很庆幸自己获得那次机会,也让我深刻体会到了面试大厂,到底需

都9012年了,怎么还会有人不会面试?

我是一家互联网公司的一线HR,负责公司技术人员的招聘。今天我有两个候选人又被fail了。关于这个岗位,我也很无奈。按理说,全是基础岗位的招聘,薪资也给的不算低,应该很容易招才对。但好巧不巧,我们公司是

漫画 | 互联网公司面试黑话图鉴:个个奥斯卡!

作者:阿波漫画:最新热歌慢摇面试如一座冰山水面之上的10%是台词水面之下的90%是潜台词看不懂面试的潜台词离沉船就不远了在信任与演技错综复杂的职场中读懂面试潜台词是你成就职场霸业的第一步这份面试黑话图

漫画 | 面试的我 VS 真实的我

作者:纯洁的微笑、孤独烟漫画师:栗子“面试造火箭,入职拧螺丝!”已经是各大互联网公司招聘的常态,为了应对如今越演越烈的面试形势,程序员一个个都变成了表演大师。俗话说面试如戏,全靠演技!HR篇01020

为了面试后不再回去等消息,我决定阅读源码

01、读源码的经历刚参加工作那会,没想过去读源码,更没想过去改框架的源码;总想着别人的框架应该是完美的、万能的,应该不需要改。另外即使我改了源码,怎么样让我的改动生效了?项目中引用的不还是没改的jar

AB test | 数据分析师面试必知 !

前言关于ABtest的重要性无需多言,数据、产品等从业人员几乎必知,好的数据科学家我想一定是知道理解业务比模型更为重要,而ABtest就是伴随着业务增长的利器。如果你心中的ABtest几乎都没有用到中