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

胡哥有话说 等级 645 0 0

一、前言

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

[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)的讲述,欢迎大家关注、留言、分享。

后记

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

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

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

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

收藏
评论区

相关推荐

关于面试题:[1, 2, 3].map(parseInt)问题的剖析
一、前言 最近有小伙伴在公号中咨询了胡哥这道面试题,窃以为是比较有意思的一道面试题,于此分享给各位小伙伴。先把答案给了各位,和你理解的一样吗?! 1, 2, 3.map(parseInt) // 1, NaN, NaN 如果你答案你都明白,请出门左转:React源码/原理了解一下。 二、剖析 这道面试题,本身并不复杂。不能正确回答问题的小伙
3.7 spring
**1.0 Property子元素的使用**   property 子元素是再常用不过的了, 在看Spring源码之前,我们先看看它的使用方法, 1\. 实例类如下: 1 public class Animal { 2 3 public String type; 4 5 public
JS 折线图
JS 折线图  echarts 折线图。需要引入:echarts.min.js <script src="${ctxStatic}/common/echarts.min.js" charset="utf-8" type="text/javascript"></script> JS调用后台方法,得到数据 Map<String, Obj
JS中二进制与十进制的相互转换
今天在做题目的时候遇到了需要十进制转换为二进制,这个我知道用toString可以,但是二进制转换为十进制我一下子就想不起来,网上搜了下,才知道是parseInt可以实现,特此记录下。 **十进制转换为二进制:** var num = 100; console.log(num.toString(2)); toString()方法可把一个
JS你所不知的小数取整方法
先介绍几种基本方法。 1.toFixed()方法 ============= toFixed() 方法是属于 Number 对象的方法,可以把 Number 四舍五入到指定的小数位数,括号内为小数位数,范围为0~20,为0时即取整数。 1.5.toFixed(0) //返回2 toFixed()方法是平时使用最多的方法,因为它不仅可
Java实现月份递减
问题:从当前月份开始,往前3年的所有月份 返回map类型,key是String,value是Date,map倒序排列 public static Map<String, Date> getDateMap() { Map<String, Date> map = new LinkedHashMap<>(); Calen
java 获取 classpath下的配置文件
一 获取 prop属性文件: /** * 读取属性文件 * Created by lg on 2017/2/3. */ public class LoadPropertiesFile { public static Map<String,String> loadPropFile(Str
java基础60 JavaScript字符串转换成数字(网页知识)
### 1、字符串转换成数字 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>字符串转换成数字练习</title> 6 </head> 7 <script type="text/javascrip
C#字符串转Json
IDictionary<string, object> map = new Dictionary<string, object>(); map\["taxpayerNum"\] = "110101201702071"; map\["enterpriseName"\] = "测试新1"; map\["tradeNo"\] = prefix + "2
HashMap 初始化时赋值
一般初始化一个map并且给map赋值的写法: HashMap<String, String> map = new HashMap<String, String>(); map.put("name", "test"); map.put("age", "20"); 但是我想在初始化的时候就直接给map中set值。
JSONObject.parseArray 获取集合
 import com.alibaba.fastjson.JSONObject;1 @PostMapping(value = "/insert-update") 2 public ResponseData inserCase(@RequestBody Map<String, Object> param){ 3
JavaScript 基础 3
3.标准对象 ====== ###     3.1.概念         typeof操作符获取对象的类型             typeof 123; // 'number'             typeof NaN; // 'number'             typeof 'str'; // 'string'
JavaScript 转换数字为整数的方法
本文将会列举并说明JavaScript 把一个number(或者numerical的对象)转换成一个整数相关方法。 使用parseInt ---------- parseInt的语法如下:parseInt(string, radix) 参数string的表示要解析的字符串,也可以是一个对象,会自动调用对象的toString函数得到要解析的字符
Map的几种取值方法
public static void main(String\[\] args) throws IOException,ParseException { Map<String,String> m = new HashMap<String,String>(); m.put("1", "haha"); m.put("2", "hehe"); m.put(
springmvc mybatis 调用sql , 转成json
1.代码 ---- @Autowired private SqlSessionFactoryBean sqlSessionFactory ; @RequestMapping(value = "f3") public String f3( @RequestBody Map<String,String> m