0

我可以将所有局部变量推入一个数组并将其传递ArrValuesdoit1 我吗?我试图找到一种方法来调用和只收集我想要的数组。

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);
}
4

3 回答 3

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'] : [],
}
于 2013-03-05T04:30:23.820 回答
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);
}
于 2013-03-05T04:34:41.347 回答
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);
于 2013-03-05T04:37:31.087 回答