如何以编程方式生成可变数量参数的函数参数列表?

问题描述:

我想调用一个函数,让我们说test_func接受可变数量的参数。 (像这个功能http://locutus.io/php/array/array_intersect_assoc/如何以编程方式生成可变数量参数的函数参数列表?

请注意我想避免修改接收器功能!到目前为止所有的答案都需要修改接收器的功能,就像链接的“可能的失败”一样。我想以编程方式生成参数列表本身。 (例如传递可变数目的对象)

我不知道我会有多少个参数。我如何用对象生成可变长度参数?

var v1 = {test:1}; 
 
var v2 = {test2:2}; 
 
var obj_arr = [v1,v2]; 
 
console.log(test_func (obj_arr.join(","))); 
 

 
//in my case this should be the equivalent of test_func (v1,v2); 
 

 
function test_func (object_arg) { 
 
    return(arguments.length); 
 
    } 
 
//should return 2!

+0

请注意我想避免修改接收器功能!到目前为止所有的答案都需要修改接收器功能以及可能的联系。 – giorgio79

+0

console.log(obj_arr.length);会给它的长度,这是你想要的? –

+1

@ giorgio79在这种情况下,唯一的选择是手动合并数组/对象中的所有参数并传递它 – Rajesh

如果在ES5环境是可以使用参数:

function test() { 
 
    var param1 = arguments[0]; 
 
    var param2 = arguments[1]; 
 
    // arguments is array like, you can iterate over it with a loop 
 
}

如果你是在ES6环境中您可以使用剩余的运算符由Suren提出,或者也使用上面的变量 - 依赖在你的团队的约定。