["1", "2", "3"].map(parseInt)
一点也没看懂,求人解释
这个应该是想实现这个功能
parse = function(i){
return parseInt(i);
}
["1", "2", "3"].map(parse)
> [1, 2, 3]
但是输出为什么是 [1, NaN, NaN]..应该和 parseInt 的用法有关吧。。
map() 返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组. array.map(callback[, thisArg]) callback 函数会被自动传入三个参数:数组元素,元素索引,原数组本身 然后元素索引就被当成了第二个参数,执行了 parseInt("1",0),parseInt("2",1),parseInt("3",2)
翻译起来就是这样:
["1", "2", "3"].map(function(i, indx, array) {
parseInt(i, indx); // indx 当作 radix 传进 parseInt 了
});
parseInt 的 radix 可以参考这里: http://www.w3school.com.cn/js/jsref_parseInt.asp
#9 楼 @u1378130755 radix: 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。 如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以“0x”或“0X”开头,将以 16 为基数。 如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
你在 console 里面试试 parseInt('1', 1)
看看