- 方法:
Array.prototype.map - 作用:
map() 方法创建一个新数组
,其结果是该数组中的每个元素都调用一次提供的函数后的返回值。 - 语法
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
-
参数的使用
可以看到,回调函数的参数中必须有当前值。(这里很容易让人以为默认传递一个值) -
题目
['1','2','3'].map(parseInt) //=> [1, NaN, NaN]
通常情况下,map 方法中的 callback 函数只需要接受一个参数,就是正在被遍历的数组元素本身。但这并不意味着 map 只给 callback 传了一个参数。这个思维惯性可能会让我们犯一个很容易犯的错误。
parseInt(string, radix) 将一个字符串 string 转换为 radix 进制的整数, radix 为介于2-36
之间的数。
由此可以看出,会传递两个值给parseInt。
-
返回值为NaN的情况
- radix 小于 2 或大于 36
- 第一个非空格字符不能转换为数字
-
具体迭代步骤
/* first iteration (index is 0): */ parseInt("1", 0);
// 0 或者 不传第二个参数。默认以10进制解析。
/* second iteration (index is 1): */ parseInt("2", 1);
// NaN,1进制下没有2
/* third iteration (index is 2): */ parseInt("3", 2); // NaN