0

すべてのローカル変数を 1 つの配列にプッシュしてから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);
}
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 に答える