一道网红面试题(腾讯、百度面试中都出现过)

在腾讯和百度的面试中,出现了这样一道面试题,,被你们亲切的称呼为网红面试题,这道面试题就是。['1', '2', '3'].map(parseInt)的输出结果是什么?['1', '2', '3'].fliter(parseInt)的输出结果是什么? 这个面试题,面试官可能不单单须要你说出他的结果,还须要你知道为何会出现这样的结果。 面试

1、关键语法

一、parseInt

二、parseFloat

先看看parseInt和parseFloat的语法和使用,以便后续在实际例子中解释。 数组

2、Map

一、['1', '2', '3'].map(parseInt)

['1', '2', '3'].map(parseInt)
// [1, NaN, NaN]
复制代码

其实在使用map时,map的callback的第二个参数index引索值就成为parseeInt的radix值。['1', '2', '3'].map(parseInt)在遍历的过程。实际上是经历了下面的过程。 bash

parseInt('1', 0);
parseInt('2', 1);
parseInt('3', 2);
复制代码
  • parseInt('1', 0):radix的值为0,判断字符串发现介于1~9,用10进制转换,结果为1.
  • parseInt('2', 1):radix的值为1,若是该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
  • parseInt('3', 2): radix的值为2,这就意味着字符串将被解析成字节数,也就是仅仅包含数值0和1。parseInt的规范指出,它仅尝试分析第一个字符的左侧。这个字符串的第一个字符是“3”,它并非基础基数2的一个有效数字。因此这个子字符串将被解析为空。若是子字符串被解析成空了,函数将返回为NaN。

二、['1', '2', '3'].map(parseFloat)

['1', '2', '3'].map(parseFloat)
// [1, 2, 3]
复制代码

parseFloat相对于parseInt比较简单,不用考虑第二个参数,只须要看第一个参数是否能正常转换为数字就行。 函数

parseFloat('1');  // 1
parseFloat('2');  // 2
parseFloat('3');  // 3
复制代码

一个小的知识点:如何快速将一个字符串数组转化为数字类型的数组 spa

['1', '2', '3'].map(parseFloat)
['1', '2', '3'].map(Number)
复制代码

3、filter

一、['1', '2', '3'].filter(parseInt)

['1', '2', '3'].filter(parseInt)
// ["1"]
复制代码

filter 为数组中的每一个元素调用一次 callback 函数,并利用全部使得 callback 返回 true 或等价于 true 的值的元素建立一个新数组。 3d

parseInt('1', 0);
parseInt('2', 1);
parseInt('3', 2);
复制代码
  • parseInt('1', 0):radix的值为0,判断字符串发现介于1~9,用10进制转换,结果为1,因此callback的结果等价于true,返回元素'1'。
  • parseInt('2', 1):radix的值为1,若是该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN,结果不等价于true,不返回。
  • parseInt('3', 2): radix的值为2,这就意味着字符串将被解析成字节数,也就是仅仅包含数值0和1。parseInt的规范指出,它仅尝试分析第一个字符的左侧。这个字符串的第一个字符是“3”,它并非基础基数2的一个有效数字。因此这个子字符串将被解析为空。若是子字符串被解析成空了,函数将返回为NaN。

二、['1', '2', '3'].filter(parseFloat)

['1', '2', '3'].filter(parseFloat)
// ["1", "2", "3"]
复制代码

使用parseFloat时,遍历以后结果的每一项都是结果等价于true,因此所有返回。 code

4、反思

经过上述的map、filter,咱们联想到数组其余方法,当使用parseInt或者是parseFloat来替代callback使用,你只须要理解到parseInt和parseFloat工做原理,那么针对这类问题,其实结果都是能很快输出的,也能套用上面的解析过来,来回答面试官。这类面试题也不是什么难题了。 cdn

相关文章
相关标签/搜索