['1','2','3'].map(parseInt)返回结果是什么?

探讨了JavaScript中数组的map方法结合parseInt函数处理字符串数组时的意外结果,解析了为何会得到[1,NaN,NaN]而非预期的[1,2,3],深入理解parseInt函数的基数参数如何影响解析过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[‘1’,‘2’,‘3’].map(parseInt)返回结果是什么?

你的第一反应结果是不是[1,2,3],但是真正的结果是[1, NaN, NaN]。为什么呢?首先看一下数组中的map方法。

map方法

引入MDN的解释,map()方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

var arr = [1, 2, 3];
var arr1 = arr.map(x => x+1);
console.log(arr1); // 2,3,4

可以看出map方法中接受一个函数function,用来处理遍历数组中的每一个元素。

new_array = [].map(function callback(currentValue[,index[,array]]){ // Return element for new_array }[, thisArg]);

这个callback一共可以接收三个参数,其中第一个参数代表当前被处理的元素,第二个参数代表该元素的索引。

parseInt函数

parseInt是用来解析字符串,使字符串成为指定基数的整数,parseInt的基本语法,

parseInt(string, radix)

接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数。radix是一个介于2-36之间的整数,返回解析后的整数值。 如果被解析参数的第一个字符无法被转化成数值类型,则返回 NaN

praseInt('111') // 111
parseInt('111', 0) // 111 
// radix为0时,且string参数不以“0x”和“0”开头时,按照10为基数处理
parseInt('111', 1) // NaN 【2 <= radix <= 36】
parseInt('111', 2) // 7

从上面可以看出根据指定不同的radix,返回不同的值。

radix参数为n将会把第一个参数看作是一个数的n进制表示,而返回的值则是十进制。

parseInt('123', 5) // 将'123'看作5进制数,返回十进制数38 => 1*5^2 + 2*5^1 + 3*5^0 = 38

下面我们来分析一下[‘1’, ‘2’, ‘3’].map(parseInt);

  1. parseInt(‘1’, 0); // radix为0时,使用默认的10进制。
  2. parseInt(‘2’, 1); // radix值在2-36,无法解析,返回NaN
  3. parseInt(‘3’, 2); // 基数为2,2进制数表示的数中,最大值小于3,无法解析,返回NaN

map函数返回的是一个数组,所以最后结果为[1, NaN, NaN]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值