【发布时间】:2014-12-09 20:28:51
【问题描述】:
我的问题是关于 JavaScript 中数组的 map 方法。
您可以将一个函数传递给它,该函数接受第二个参数,即正在处理的数组的当前元素的索引,但是......有什么目的?这样做会发生什么,不这样做有什么区别?
你会用这个功能做什么?
【问题讨论】:
-
你的地图是指javascript对象吗?介意举个例子吗?
标签: javascript methods map
我的问题是关于 JavaScript 中数组的 map 方法。
您可以将一个函数传递给它,该函数接受第二个参数,即正在处理的数组的当前元素的索引,但是......有什么目的?这样做会发生什么,不这样做有什么区别?
你会用这个功能做什么?
【问题讨论】:
标签: javascript methods 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])
callback
产生新数组元素的函数,接受三个参数:
currentValue
数组中正在处理的当前元素。
index
数组中正在处理的当前元素的索引。
array
调用了数组映射。
map 函数将回调函数作为参数(而不是索引作为参数,正如在编辑之前的问题中最初所述)。回调函数有一个索引作为参数 - 回调是自动调用的,因此您无需自己提供索引。如果只需要当前值,可以省略其他参数。
【讨论】: