将可选的多个参数传递给函数

时间:2012-12-17 17:51:08

标签: javascript arrays

这可能是重复的,但我找不到正确的答案却没有成功。我正在努力实现这样的目标:

var joinArrays = function(myCollectionOfArguments) {
    return array.concat(array1, array2, ..... , arrayN);
};

在这种情况下,myCollectionOfArguments将是array1, array2, ..... , arrayN。我怎么能实现这样的目标?我知道如果我有一个回调函数,我会使用.apply()传递尽可能多的参数,但在这种情况下,我对这种方法感到有些困惑。

编辑:所以,为了更具描述性:我可以传递尽可能多的参数,而不必在定义函数的参数时指定它,在我的情况下myCollectionOfArguments,在定义函数时只是一个参数,但是当我想使用我希望能够传递多个参数的函数时;

4 个答案:

答案 0 :(得分:4)

您可以将arguments object用于任意数量的参数,甚至可以将其直接传递到.apply

var joinArrays = function() {
    return [].concat.apply([], arguments);
};

顺便说一下,使用bind会更优雅:

var joinArrays = Array.prototype.concat.bind([]);

答案 1 :(得分:2)

如果我的意图正确,请尝试:

var joinArrays = function(a) {
  return a.concat.apply(a, Array.prototype.slice.call(arguments, 1));
};

var foo = joinArrays([1, 2], [3, 4], [5, 6]);

console.log(foo); // => [1, 2, 3, 4, 5, 6] 

答案 2 :(得分:0)

function testFunction()
{
    var arg1 = arguments[0];
    var arg2 = arguments[1];
    var arg3 = arguments[2];
}

答案 3 :(得分:0)

不确定我理解,但你可以传递任意数量的数组:

joinArrays([1,2,3], [4,5,6], [7,8], [9,10,11,12])

稍后使用arguments内的特殊joinArrays()变量阅读所有这些内容。