JavaScript数组#map:索引参数

49
我的问题是关于 JavaScript 数组的 map 方法。你可以传递一个带有第二个参数的函数,该参数表示正在处理的数组当前元素的索引,但是...这样做有什么用呢?如果这么做和不这么做有什么区别?你会用这个特性做什么?

你所说的“map”是指JavaScript对象吗?能否提供一个例子? - Steve
3个回答

94

回调函数总是会传递当前项目的索引,唯一的区别是如果在函数中不声明它,则无法按名称访问它。

例如:

[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

演示:http://jsfiddle.net/Guffa/k4x5vfzj/


14

有时候元素的索引很重要。例如,该映射将每个第二个元素替换为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]

6

这是关于map函数的描述:

arr.map(callback[, thisArg])

回调函数
产生新数组元素的函数,需要三个参数:

currentValue
当前正在数组中处理的元素。

index
正在数组中处理的当前元素的索引。

array
调用map方法的数组。

map方法将回调函数作为参数(而不是索引,这是在问题编辑之前最初陈述的错误)。回调函数具有一个索引作为参数-回调会自动调用,因此您无需提供索引。如果您只需要当前值,则可以省略其他参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接