使用带有一个附加参数的函数的map()进行JS回调

syn*_*ror 8 javascript arrays parameters callback map

我试图找到一种方法来使用JS的Array.prototype.map()功能,该函数有一个额外的参数(如果可能的话,我想避免重写内置的Array.prototype.map()).此文档非常好,但不包括"一个或多个附加参数"的情况:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map

function doOpSingle(elem)
{
 // do something with one array element
}

var A = ["one", "two", "three", "four"];
var x = A.map(doOpSingle); // this will execute doOpSingle() on each array element
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是,如果有问题的函数有两个参数,例如你可能想要对它进行OR的标记(想想位掩码)怎么办?

function doOpSingle2(arrelem,flag)
{
 // do something with one array element
}

var A = ["one", "two", "three", "four"];
var theFlag = util.getMask(); // call external function
var y = A.map(doOpSingle2(theFlag)); // this does not work!
Run Code Online (Sandbox Code Playgroud)

当然,任何解决方案都应该没有 for循环,因为这就是我们为什么map()要让我们的代码更清洁而摆脱这些!

Nie*_*sol 18

使用匿名函数:

A.map(function(a) {return doOpSingle2(a,theFlag);});
Run Code Online (Sandbox Code Playgroud)


Esa*_*ija 15

A.map(doOpSingle2.bind(null, theFlag))

theFlag 将是第一个论点:

function doOpSingle2( flag, elem ) { ... }