doubleyong
管理员
管理员
  • 最后登录2024-04-16
  • 发帖数1167
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:2764回复:0

[Javascript]变态面试题之map与parseInt的结合输出

楼主#
更多 发布于:2021-02-15 11:46
面试题:


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


【分析】


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



思考?

思考?

思考?





01 map 方法



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

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


语法:

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]



如果喜欢这篇文章,欢迎添加右下角 "公众号",可以第一时间获到文章推送
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号