我试图创建一个返回带有 n 元素的数组的函数,这些函数都是相同的函数(此数组稍后将用于使用{{并行调用这些函数1}})。
我可以轻松地遍历数组并将函数添加到每个元素,但是想知道我是否可以使用async
在一行中完成:
map
如果我使用常量预填充数组,则//the function to point to
var double = function(x) {
return x*2;
};
//this function will create the array - just a filler for a one-liner
var createConsumersArray = function(numOfConsumers) {
var consumers = (new Array(2)).map(function(x){return double;});
return consumers;
};
var t = createConsumersArray(2);
console.log(t); //prints [,]
console.log(t[1](2)); //TypeError: Property '1' of object , is not a function
起作用,即:
map
如何以最短的方式完成填充具有相同功能的数组?
答案 0 :(得分:1)
你必须改变一点。
var createConsumersArray = function(numOfConsumers) {
var consumers = Array.apply(null, Array(numOfConsumers)).map(function(){return double;});
return consumers;
};
答案 1 :(得分:1)
这是更多功能性编程。如果您想以这种方式进行编程,我建议您查看underscore.js。以下是范围函数的示例:
_.range(10);
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
对于您的用例,您可以这样做:
_.map(_.range(4), function(num){ return double; });