JavaScript Array#map:索引参数

我的问题是关于JavaScript中数组的map方法。

您可以传递一个函数,它接受第二个参数,即正在处理的数组的当前元素的索引,但是…有什么目的? 当你这样做时会发生什么,当你不这样做时有什么区别?

你会使用这个function?

当前项的索引总是传递给callback函数,唯一不同的是你不能通过名称来访问它。

例:

 [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/

有时元素的索引很重要。 例如,这个图用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] 

这里是mapfunction的描述:

 arr.map(callback[, thisArg]) 

callback
产生新数组元素的函数,带三个参数:

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

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

array
数组映射被调用。

map函数将callback函数作为参数(而不是索引作为参数,正如在编辑之前的问题中所述)。 callback函数有一个索引作为参数 – callback是自动调用的,所以你不要自己提供索引。 如果您只需要当前值,则可以省略其他参数。