[阿里巴巴最新面试题----JavaScript中map(parseInt)的问题]

简介: [阿里巴巴最新面试题----JavaScript中map(parseInt)的问题]

[阿里巴巴最新面试题----JavaScript中map(parseInt)的问题]

问题

利用map()把字符串变成整数

let arr = [10.18,0,10,25,23];
arr = arr.map(parseInt);
console.log(arr);

Output:

[10, NAN, 2, 2, 11]

原因

map()有三个参数:value, index, array,后两个为可选参数

  • 调用map函数时,三个参数都会传入map内的函数中
  • 在这道题中,parseInt有两个参数,字符串和进制
  • 所以,map会将value和index传入parseInt函数

实际上最终的效果是:

parseInt("10.18", 0);  -> 10
parseInt("0", 1);  -> NAN
parseInt("10", 2);  -> 2
parseInt("25", 3);  -> 2
parseInt("23", 4);  -> 11

想要正确转换的解决办法

  1. Number
let arr = [10.18,0,10,25,23];
console.log(arr.map(Number));
  1. 自定义
let arr = [10.18,0,10,25,23];
console.log(arr.map((value)=>{
    return parseInt(value);
}))

补充:

有关parseInt的radix,当遇到0、undefined或未被指定时,parseInt有如下行为:

1)被转换的字符串起于"0x"/“0X” --> 十六进制转为十进制;

2)被转换的字符串起于"0" --> 八进制或十进制(由解释器决定)转为十进制;

3)被转换字符串起于其他值 --> 十进制转为十进制

目录
打赏
0
0
0
0
10
分享
相关文章
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
只会“有序无序”?面试官嫌弃的List、Set、Map回答!
小米,一位热衷于技术分享的程序员,通过与朋友小林的对话,详细解析了Java面试中常见的List、Set、Map三者之间的区别,不仅涵盖了它们的基本特性,还深入探讨了各自的实现原理及应用场景,帮助面试者更好地准备相关问题。
90 20
为什么 JavaScript 的 parseInt(0.0000005) 打印“5”?
为什么 JavaScript 的 parseInt(0.0000005) 打印“5”?
48 1
为什么 JavaScript 的 parseInt(0.0000005) 打印“5”?
JavaScript 数组常用高阶函数总结,包括插入,删除,更新,反转,排序等,如map、splice等
JavaScript数组的常用高阶函数,包括遍历、插入、删除、更新、反转和排序等操作,如map、splice、push、pop、reverse等。
46 0
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)
这段代码和说明介绍了JavaScript中数组的一些常用方法。函数接收三个参数:`item`(数组项的值)、`index`(项的位置,可选)和`array`(数组本身,可选)。示例展示了如何使用`filter()`过滤非空项、`forEach()`遍历数组、`map()`处理并返回新数组、`every()`检查所有元素是否满足条件、`some()`检查是否存在满足条件的元素、`find()`获取首个符合条件的元素值以及`findIndex()`获取其索引位置。这些方法都不会修改原数组。
117 0
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)