将参数作为数组发送

时间:2013-03-05 04:24:40

标签: javascript arrays parameter-passing

我可以将所有局部变量推送到一个数组并将其从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);
}

3 个答案:

答案 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);