关于map和parseInt的函数解释developer.mozilla.org/zh-CN/docs/…
首先parseInt(string, radix) 接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数,即进制数:
function returnInt(element) {
return parseInt(element, 10);
}
parseInt(10,0) //10 radix为0时按十进制处理
parseInt(10,1) //NaN 最小是二进制
parseInt(10,2) //2 即2的0次方*0加2的1次方
parseInt(10,3) //3 即3的0次方*0加3的1次方
复制代码
所以第一个参数小于10的时候不能大于第二个参数,数学里的进制原理
parseInt(3,2) //NaN 3的二进制是10
parseInt(9,8) //NaN 9的八进制是10
复制代码
之后map
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
callback
生成新数组元素的函数,使用三个参数:
currentValue
callback 数组中正在处理的当前元素。
index可选
callback 数组中正在处理的当前元素的索引。
array可选
callback map 方法被调用的数组。
thisArg可选
执行 callback 函数时使用的this 值。
eg:
[1,2,3].map(function(a,b,c){console.log(a,b,c)})
1 0 [1, 2, 3]
2 1 [1, 2, 3]
3 2 [1, 2, 3]
复制代码
所以题目返回的数组分别是
parseInt(1,0) //十进制 1
parseInt(2,1) //1不符合参数要求
parseInt(3,2) //二进制3是10
所以实际的结果是 [1, NaN, NaN]
复制代码