52 Array.prototype.map() 和 parseInt 联合使用

52 Array.prototype.map() 和 parseInt 联合使用

有数组 array

let array = ["1", "3", "5", "2", "6", "4"]

使用数组的 map()

let newArray = array.map(parseInt)

打印 newArray

console.log(newArray)

parseInt 的作用是将字符型变为数值型,预期打印的结果是

[1 ,3, 5, 2, 6, 4]

但是实际的打印结果是

[1, NaN, NaN, 2, NaN, 4]

有的元素能达到预期结果,而有的结果是 NaN ,原因是 Array.prototype.map()parseInt() 两者的参数对应问题

一、 Array.prototype.map() 参数

let newArray = array.map((value, index, array) => { }

三个参数

value 数组中正在处理的当前元素

index 数组中正在处理的当前元素的索引

array map 方法调用的数组

二、 parseInt 参数

parseInt(string, radix)

两个参数

string 要被解析的值

radix 从 2 到 36,表示字符串的基数。例如指定 16 表示被解析值时十六进制数,且 10 并不是默认值

所以根据 Array.prototype.map()parseInt() 两者的参数分析

使用数组的 map()

let newArray = array.map(parseInt)
<!-- 等价于 -->
let newArray = array.map((value, index, array) => {
    parseInt(value, index, array)
})

因为 parseInt 只有两个参数,array 直接被忽略,但是它的第二个参数就等于数组的下标

如果是 10 进制,0-9 都是小于 10 的10 的字符,如果是 2 进制, 0-1 都是小于 2 的字符,2-36 最小是 2,而 0-9 的十个加上 a-z 的二十六个,共 36 个,所以最大为 36

在转进制的时候,如果该数大于等于进制数,结果为 NaN

parseInt("1", 0)	// 0 以 10 进制转化,1
parseInt("3", 1)	// NaN
parseInt("4", 2)	// NaN
parseInt("2", 3)	// 2
parseInt("6", 4)	// NaN
parseInt("4", 5)	// 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值