我的javascript
有超过12个函数,所有函数都调用以下函数。
address_bar(gender, age_min, age_max, religion, country, address, zip-code, telephone);
我的问题是可以按如下方式调用此函数。
var string = 'gender, age_min, age_max, religion, country, address, zip-code, telephone';
将每个功能调用为
address_bar(string); //not working
我得到参数的未定义变量错误。
答案 0 :(得分:1)
您可以通过逗号将字符串拆分为数组,然后通过apply
将结果参数传递给函数,但有一点需要注意:所有参数都是字符串,所以如果需要区分的话在数字和字符串之间,还有另一个循环并根据您期望的任何类型解析结果的步骤。您还必须小心确保所有预期值都没有逗号,否则您将过早地分割结果。
以下是最基本案例的示例:
address_bar.apply(null, string.split(','));
答案 1 :(得分:1)
另一种方法是将它们放在像
这样的数组中SELECT
PID,
SUM(CLICKS) as CLICKS,
SUM(VIEWS) as VIEWS
FROM States
GROUP BY PID
答案 2 :(得分:0)
如果没有修改功能,你不能将它们作为一个字符串传递,你至少有3个选项。
1)将你的功能改为接受一个字符串:
function adress_bar(string){
//split string and do soemthign with data;
}
adress_bar(string);
2)更改/拆分您尝试的数据" push"进入如下功能:
var gender = 'gender', age_min = "age_min", ... , telephone = "telephone";
然后使用以下每个变量运行函数:
adress_bar(gender, age_min, ... , telephone);
3)创建参数的数组或对象,并将它们全部作为一个传递。
var array = ["gender", "age_min", "age_max", "religion", "country", "address", "zip-code", "telephone"];
function address_bar(some_array){
//do something with some_array
}
address_bar(array);
答案 3 :(得分:-1)
这完全符合您的要求:
var x = [ 'gender', 'age_min', 'age_max', 'religion', 'country', 'address', 'zip-code', 'telephone' ];
address_bar.apply(this, x);
您可以阅读有关申请here的更多信息: