[‘1‘,‘2‘,‘3‘].map(parseInt)结果返回什么?
对于下面的代码究竟会返回什么呢?
console.log(['1','2','3'].map(parseInt));
我们都知道 map() 方法是对原始数组中同样位置的元素运行传入函数而返回的结果,结果是一个数组,这一点毋容置疑。而 parseInt 解析一个字符串,并返回一个整数。所以我们当然会觉得上面代码会打印出 [1,2,3],但是通过打印后发现返回的是 [1,NaN,NaN],这是为什么呢?
首先我们来看一下 parseInt 的具体用法:
语法
parseInt(s,radix)解析一个字符串,并返回一个整数。
参数
s:表示字符串
radix:表示其它进制转十进制的基数,范围在2~36,不在这个范围的返回NaN。该参数可以省略或为0,这种情况会根据字符串的开头来判断基数,规则如下:
- 字符串以"0x" 开头,基数为16
- 字符以"0"开头,版本低于ECMAScript 5的,基数为8。版本为ECMAScript 5的,基数为10
- 以 1 ~ 9 的数字开头,基数为10。
基数是什么?
基数:是其它进制转十进制数的公式里的组成部分,公式如下:
位数1 * 基数0 + 位数2 * 基数1 + 位数3 * 基数2 + 位数n * 基数n-1 ...
例如:
parseInt(“101”,2) :101=1*20+0*21+1*22=1+0+4=5 返回5
parseInt(“210”,3) :210=0*30+1*31+2*32=0+3+18=21 返回21
注意 map 可以传入三个参数,而 parseInt 只接受前两个。
分析结果
['1','2','3'].map(parseInt) 即
parseInt('1',0):radix 为 0,parseInt() 会根据十进制来解析,所以结果为 1;
parseInt('2',1):radix 为 1,超出区间范围,所以结果为 NaN;
parseInt('3',2):radix 为 2,用2进制来解析,应以 0 和 1 开头,所以结果为 NaN。
那分析分析 ['1', '7', '11'].map(parseInt); => [1, NaN, 3]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏