`

Array.map的细节

阅读更多
What is the result of this expression?

["1", "2", "3"].map(parseInt);
//map的用法是:对于数组中的每一个元素都调用map里面的回调函数,将结果返回形成新的数组。


结果竟然是:
[1, NaN, NaN]


原来map的传入给回调函数的参数有三个:元素、元素下标和数组。用下面的方法就一目了然了。
["1", "2", "3"].map(function() { console.log(arguments); });


结果如下:
["1", 0, ["1", "2", "3"]]
["2", 1, ["1", "2", "3"]]
["3", 2, ["1", "2", "3"]]   


而parseInt所需要的参数为两个,第一个是需要转化为整数的输入,第二个是可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

所以,就出现了上面的一幕。

正确的方法应该怎么办呢?

其实很简单:
["1", "2", "3"].map(function(str) {
    return str - 0;
});
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics