这可能是重复的,但我找不到正确的答案却没有成功。我正在努力实现这样的目标:
var joinArrays = function(myCollectionOfArguments) {
return array.concat(array1, array2, ..... , arrayN);
};
在这种情况下,myCollectionOfArguments
将是array1, array2, ..... , arrayN
。我怎么能实现这样的目标?我知道如果我有一个回调函数,我会使用.apply()
传递尽可能多的参数,但在这种情况下,我对这种方法感到有些困惑。
编辑:所以,为了更具描述性:我可以传递尽可能多的参数,而不必在定义函数的参数时指定它,在我的情况下myCollectionOfArguments
,在定义函数时只是一个参数,但是当我想使用我希望能够传递多个参数的函数时;
答案 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()
变量阅读所有这些内容。