我有一个数组,现在我想在数组中的每个元素上执行一个函数。
我尝试使用 map()
函数。问题是,我传递给 map()
的回调函数有自己的参数(不是element, index, array)。
我能否向这样的回调函数传递参数?如何实现?
我有一个数组,现在我想在数组中的每个元素上执行一个函数。
我尝试使用 map()
函数。问题是,我传递给 map()
的回调函数有自己的参数(不是element, index, array)。
我能否向这样的回调函数传递参数?如何实现?
我可以想到两种不同的方法:
使用thisArg
将选项对象设置为回调函数中的this
值:
var numbers = [1,2,3,4,5,6,7,8,9,10];
function callback(element) {
return element + this.add;
};
var mapped = numbers.map(callback, {
add: 10
});
console.log(mapped);
使用.bind()
设置一些参数:
var numbers = [1,2,3,4,5,6,7,8,9,10];
function callback(add, element) {
return element + add;
};
var mapped = numbers.map(callback.bind(null, 10));
console.log(mapped);
this
对象传递给回调函数。这个this
指的是什么? - jingleithis
用于引用函数作为方法调用的对象。数组 map 方法允许指定 this
对象,因为它不是将函数作为方法调用,所以这非常有用。在这种情况下,我只设置了一个特定的 this 值,即我的自己的对象。这个问题更详细地介绍了 this
对象:“this” 关键字如何工作? - Alexander O'Mara我认为你可能需要在另一个回调函数中包装你的原始函数,像这样:
var array = ['one', 'two', 'skip-a-few', 'three', 'four']
console.log(
array.map(function (element) {
return original('other', 'variables', element)
})
)
// this function doesn't matter, just an example
function original(a, b, c) {
return a + ' ' + b + ' ' + c
}
map((elm, index) => { func(params); })
? - Andrew Li(arg1, arg2, /*etc*/, element, index, array)
这样的参数列表。 - Patrick Evans