填充具有相同功能的数组

时间:2014-06-17 17:23:26

标签: javascript arrays

我试图创建一个返回带有 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

如何以最短的方式完成填充具有相同功能的数组?

2 个答案:

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

这是corresponding jsfiddle example