如何以编程方式生成可变数量参数的函数参数列表?
问题描述:
我想调用一个函数,让我们说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!
答
如果在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提出,或者也使用上面的变量 - 依赖在你的团队的约定。
请注意我想避免修改接收器功能!到目前为止所有的答案都需要修改接收器功能以及可能的联系。 – giorgio79
console.log(obj_arr.length);会给它的长度,这是你想要的? –
@ giorgio79在这种情况下,唯一的选择是手动合并数组/对象中的所有参数并传递它 – Rajesh