我可以将其他参数传递给JavaScript map()回调函数吗?

时间:2016-12-10 06:45:10

标签: javascript

我有一个数组,现在我想对数组中的每个元素执行一个函数。

我正在尝试使用map()功能。问题是,我传递给map()的回调函数有自己的参数(不是元素,索引,数组)。

我可以将参数传递给这样的回调函数吗?怎么样?

2 个答案:

答案 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
}