首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【春节日更】变态面试题之map与parseInt的结合输出

【春节日更】变态面试题之map与parseInt的结合输出

作者头像
用户9914333
发布2022-07-22 14:11:35
发布2022-07-22 14:11:35
4580
举报
文章被收录于专栏:bug收集bug收集

面试题:

["1", "2", "3"].map(parseInt) 答案是多少?

【分析】

此题,主要是考 map 与 parseInt 方法的参数

思考?

思考?

思考?

01

map 方法

首先,来看看map的语法 ; 如果知道可以跳过

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

语法:

代码语言:javascript
复制
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
 // Return element for new_array 
}[, thisArg])

参数

callback

生成新数组元素的函数,使用三个参数:

currentValue

callback 数组中正在处理的当前元素。

index可选

callback 数组中正在处理的当前元素的索引。

array可选

map 方法调用的数组。

thisArg可选

执行 callback 函数时值被用作this。

返回值

一个由原数组每个元素执行回调函数的结果组成的新数组。

02

parseInt 方法

再来看看,parseInt的语法; 如果知道可以跳过

parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数, radix 是2-36之间的整数,表示被解析字符串的基数。

语法

parseInt(string, radix);

参数

string

要被解析的值。如果参数不是一个字符串,则将其转换为字符串(使用 ToString 抽象操作)。字符串开头的空白符将会被忽略。

radix 可选(重点了解)

从 2 到 36,表示字符串的基数。例如指定 16 表示被解析值是十六进制数。请注意,10不是默认值!

返回值

从给定的字符串中解析出的一个整数。

或者 NaN,

当radix 小于 2 或大于 36 ,或

第一个非空格字符不能转换为数字。

03

面试题分析

回顾题目:

["1", "2", "3"].map(parseInt) 答案是多少?

分析:

1、map方法的第一个参数callback是一个函数 ,parseInt就被当前这个函数

2、map方法中的callback函数的参数,第一个表示数组当前值,第二个表示索引

所以,这返回结果主要就看parseInt方法的返回值了

parseInt('1',0);

parseInt('2',1);

parseInt('3',2);

这里,就需要了解下parseInt方法的第二个参数了,radix 可选,从 2 到 36 ,表示字符串的基数,即几进制;2就表示2进制,16就表示16进制

根据上面理论,可以得出

parseInt('1',0);

//radix为0时,使用默认的10进制,返回1。

parseInt('2',1);

// radix值在2-36,无法解析,返回NaN

parseInt('3',2);

// 基数为2,2进制数表示的数中,最大值小于3,无法解析,返回NaN

代码运行如下:

3、map方法会返回一个新的数组

故,最终结果为:[1,NaN,NaN]

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bug收集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档