['1', '2', '3'].map(parseInt) wh

2019-08-01  本文已影响0人  皇甫贝

看到这个题目的时候,脑海跳出的答案是 [1, 2, 3],但是真正的答案是[1, NaN, NaN]

为什么会出现这么怪异的问题?

其实主要出现在parseInt身上,我们先来看下map的参数
map函数的第一个参数callback:

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

这个callback一共可以接收三个参数,

parseInt则是用来解析字符串的,使字符串成为指定基数的整数。
parseInt(string, radix)
接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数。

了解这两个函数后,我们可以模拟一下运行情况

如何改进才能得到我们需要的结果那?

Advanced-Frontend组织 看到一个比较有意思的题目。
主要是讲JS的映射与解析
早在 2013年, 加里·伯恩哈德就在微博上发布了以下代码段:

['10','10','10','10','10'].map(parseInt);
// [10, NaN, 2, 3, 4]

如果您实际上想要循环访问字符串数组, 该怎么办? map()然后把它换成数字?使用编号!

['10','10','10','10','10'].map(Number);
// [10, 10, 10, 10, 10]
上一篇 下一篇

猜你喜欢

热点阅读