我的问题是关于 JavaScript 数组的 map 方法。你可以传递一个带有第二个参数的函数,该参数表示正在处理的数组当前元素的索引,但是...这样做有什么用呢?如果这么做和不这么做有什么区别?你会用这个特性做什么?
回调函数总是会传递当前项目的索引,唯一的区别是如果在函数中不声明它,则无法按名称访问它。
例如:
[1,2,3].map(function(o, i){
console.log(i);
return 0;
});
[1,2,3].map(function(o){
console.log(arguments[1]); // it's still there
return 0;
});
输出:
0
1
2
0
1
2
有时候元素的索引很重要。例如,该映射将每个第二个元素替换为0:
var a = [1, 2, 3, 4, 5, 6];
var b = a.map(function(el, index) {
return index % 2 ? 0 : el;
});
console.log(b);
输出:
[1, 0, 3, 0, 5, 0]
这是关于map
函数的描述:
arr.map(callback[, thisArg])
回调函数
产生新数组元素的函数,需要三个参数:
currentValue
当前正在数组中处理的元素。
index
正在数组中处理的当前元素的索引。
array
调用map方法的数组。
map方法将回调函数作为参数(而不是索引,这是在问题编辑之前最初陈述的错误)。回调函数具有一个索引作为参数-回调会自动调用,因此您无需提供索引。如果您只需要当前值,则可以省略其他参数。