我可以将所有局部变量推送到一个数组并将其从ArrValues
传递给doit1
我正试图找到一种方法来调用并只收集我想要的数组。
a="doit1";
arr="all";
ArrValues(a,arr);
function ArrValues(a,arr){
var func=a;
var num=arr;
var ID = num=='one' || num=='all' ? ['ID1','ID2','ID3','ID4'] : [];
var Nam = num=='two' || num=='all' ? ['dog','bike','horn','goat'] : [];
var X = num=='three' || num=='all' ? ['696','258','601','204'] : [];
var Y = num=='four' || num=='all' ? ['119','590','594','125'] : [];
window[func](ID,Nam,X,Y);
}
function doit1(ID,Nam,X,Y){
alert(ID);
alert(Nam);
alert(X);
alert(Y);
}
答案 0 :(得分:0)
不是传递数组,而是传递一个对象。
{
ID: num=='one' || num=='all' ? ['ID1','ID2','ID3','ID4'] : [],
Nam: num=='two' || num=='all' ? ['dog','bike','horn','goat'] : [],
X: num=='three' || num=='all' ? ['696','258','601','204'] : [],
Y: num=='four' || num=='all' ? ['119','590','594','125'] : [],
}
答案 1 :(得分:0)
试试这个:
var dict = { 'ID' : ID, 'Nam' : Nam, 'X' : X, 'Y' : Y };
将那个传递给你的函数。 (例如 doIt(dict);
或window[func](dict);
)
然后您可以轻松访问任何对象变量,如下所示:
function doIt(d)
{
alert(d.ID);
alert(d.Nam);
alert(d.X);
alert(d.Y);
}
答案 2 :(得分:0)
您可以将所有内容填充到对象中,并将该对象传递给下一个函数。在下一个函数中,您可以通过该对象访问值。
function ArrValues(func, num) {
var obj = {}
, all = (num === 'all')
;
obj.ID = (all || num === 'one') ? ['ID1', 'ID2', 'ID3', 'ID4'] : [];
obj.Nam = (all || num === 'two') ? ['dog', 'bike', 'horn', 'goat'] : [];
obj.X = (all || num === 'three') ? ['696', '258', '601', '204'] : [];
obj.Y = (all || num === 'four') ? ['119', '590', '594', '125'] : [];
window[func](obj);
}
function doit1(obj) {
alert(obj.ID);
alert(obj.Nam);
alert(obj.X);
alert(obj.Y);
}
a = "doit1";
arr = "all";
ArrValues(a, arr);