经常会遇到这样一个面试题
["1","2","3"].map(parseInt)
但实际的结果是 [1, NaN, NaN]
通常使用parseInt时,只需要传递一个参数.但实际上,parseInt可以有两个参数.第二个参数是进制数.可以通过语句"alert(parseInt.length)===2"来验证.
map方法在调用callback函数时,会给它传递三个参数:当前正在遍历的元素, 元素索引, 原数组本身.
第三个参数parseInt会忽视, 但第二个参数不会,也就是说,parseInt把传过来的索引值当成进制数来使用.从而返回了NaN.
//应该使用如下的用户函数Int
function Int(element){
return parseInt(element,10);
}
["1", "2", "3"].map(Int);
// 返回[1,2,3]
["1","2","3"].map(parseInt)
map方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。
你可能觉的会是[1, 2, 3]但实际的结果是 [1, NaN, NaN]
通常使用parseInt时,只需要传递一个参数.但实际上,parseInt可以有两个参数.第二个参数是进制数.可以通过语句"alert(parseInt.length)===2"来验证.
map方法在调用callback函数时,会给它传递三个参数:当前正在遍历的元素, 元素索引, 原数组本身.
第三个参数parseInt会忽视, 但第二个参数不会,也就是说,parseInt把传过来的索引值当成进制数来使用.从而返回了NaN.
//应该使用如下的用户函数Int
function Int(element){
return parseInt(element,10);
}
["1", "2", "3"].map(Int);
// 返回[1,2,3]