我有一个函数,它接受可变数量的参数,并且在数组中有这些参数。该函数不将数组作为参数。我想做的是将数组分解为函数调用的参数。我不确定数组有多长,但我知道它将超过3。
var array = ['a', 'b', 'c', 'd', ...etc]
doit(arr[0], arr[1], arr[2], ...etc)
function doit( a, b, ...c){
//do stuff
}
答案 0 :(得分:3)
听起来像您应该传播 array
到doit
的呼叫中:
doit(...array);
请注意,这称为 spread (或“ spread语法”),它不会造成破坏。销毁涉及创建新变量或分配给现有变量。
较旧的方法是使用apply
:
doit.apply(undefined, array);
答案 1 :(得分:0)
一种方法是在任何javascript函数中使用特殊变量arguments
。无论其数量如何,您都可以访问所有参数。
var arr1 = ['a', 'b', 'c', 'd', 'e', 'f'];
var arr2 = ['A', 'B', 'C'];
doit(arr1); // one argument: [a,b,c,d,e,f]
doit(arr2); // one argument: [A,B,C]
doit(arr1[0], arr2[1], 'anything', -3.1); // four arguments: a, B, 'anything', -3.1
function doit(){
for(var i=0; i<arguments.length; i++) {
console.log("argument " + i + " is : " + arguments[i]);
}
}