我有一个数组,现在我想对数组中的每个元素执行一个函数。
我正在尝试使用map()
功能。问题是,我传递给map()
的回调函数有自己的参数(不是元素,索引,数组)。
我可以将参数传递给这样的回调函数吗?怎么样?
答案 0 :(得分:16)
我可以想到两种不同的方式:
使用thisArg
将选项对象设置为回调中的this
值:
var numbers = '1,2,3,4,5,6,7,8,9,10'.split(',');
function callback(element) {
return parseInt(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'.split(',');
function callback(add, element) {
return parseInt(element) + add;
};
var mapped = numbers.map(callback.bind(null, 10));
console.log(mapped);
答案 1 :(得分:0)
我认为您可能需要将原始函数包装在另一个回调函数中,如下所示:
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
}