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


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

['1', '2', '3'].map(parseInt)
// [1, NaN, NaN]其实在使用map时,map的callback的第二个参数index引索值就成为parseeInt的radix值。['1', '2', '3'].map(parseInt)在遍历的过程。其实是经历了下面的过程。
parseInt('1', 0);
parseInt('2', 1);
parseInt('3', 2);['1', '2', '3'].map(parseFloat)
// [1, 2, 3]parseFloat相对于parseInt比较简单,不用考虑第二个参数,只需要看第一个参数是否能正常转换为数字就行。
parseFloat('1'); // 1
parseFloat('2'); // 2
parseFloat('3'); // 3一个小的知识点:如何快速将一个字符串数组转化为数字类型的数组
['1', '2', '3'].map(parseFloat)
['1', '2', '3'].map(Number)
['1', '2', '3'].filter(parseInt)
// ["1"]filter 为数组中的每个元素调用一次 callback 函数,并利用所有使得 callback 返回 true 或等价于 true 的值的元素创建一个新数组。
parseInt('1', 0);
parseInt('2', 1);
parseInt('3', 2);['1', '2', '3'].filter(parseFloat)
// ["1", "2", "3"]使用parseFloat时,遍历之后结果的每一项都是结果等价于true,所以全部返回。
通过上述的map、filter,我们联想到数组其他方法,当使用parseInt或者是parseFloat来替代callback使用,你只需要理解到parseInt和parseFloat工作原理,那么针对这类问题,其实结果都是能很快输出的,也能套用上面的解析过来,来回答面试官。这类面试题也不是什么难题了。
源自:https://juejin.im/post/5dbff8735188252ddb2fd25e
声明:文章著作权归作者所有,如有侵权,请联系小编删除。