[阿里巴巴最新面试题----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)被转换字符串起于其他值 --> 十进制转为十进制

目录
相关文章
|
3月前
|
存储 JavaScript 前端开发
js中map属性
js中map属性
45 1
|
2月前
|
JavaScript 前端开发 安全
为什么 JavaScript 的 parseInt(0.0000005) 打印“5”?
为什么 JavaScript 的 parseInt(0.0000005) 打印“5”?
31 1
为什么 JavaScript 的 parseInt(0.0000005) 打印“5”?
|
2月前
|
存储 JavaScript 前端开发
js的map和set |21
js的map和set |21
|
2月前
|
JavaScript 前端开发
js map和reduce
js map和reduce
|
1月前
|
存储 JavaScript 前端开发
js中map属性
js中map属性
18 0
|
1月前
|
前端开发 JavaScript 索引
JavaScript 数组常用高阶函数总结,包括插入,删除,更新,反转,排序等,如map、splice等
JavaScript数组的常用高阶函数,包括遍历、插入、删除、更新、反转和排序等操作,如map、splice、push、pop、reverse等。
18 0
|
2月前
|
JavaScript 前端开发
JavaScript Array map() 方法
JavaScript Array map() 方法
|
2月前
|
JavaScript 前端开发
JavaScript 中 五种迭代数组的方法 every some map filter forEach
本文介绍了JavaScript中五种常用数组迭代方法:every、some、filter、map和forEach,并通过示例代码展示了它们的基本用法和区别。
|
3月前
|
JavaScript 前端开发 索引
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)
这段代码和说明介绍了JavaScript中数组的一些常用方法。函数接收三个参数:`item`(数组项的值)、`index`(项的位置,可选)和`array`(数组本身,可选)。示例展示了如何使用`filter()`过滤非空项、`forEach()`遍历数组、`map()`处理并返回新数组、`every()`检查所有元素是否满足条件、`some()`检查是否存在满足条件的元素、`find()`获取首个符合条件的元素值以及`findIndex()`获取其索引位置。这些方法都不会修改原数组。
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)
|
3月前
|
Java
【Java集合类面试二十二】、Map和Set有什么区别?
该CSDN博客文章讨论了Map和Set的区别,但提供的内容摘要并未直接解释这两种集合类型的差异。通常,Map是一种键值对集合,提供通过键快速检索值的能力,而Set是一个不允许重复元素的集合。