引用数组javascript

时间:2015-01-22 15:01:11

标签: javascript arrays

使用以下代码:

Array0 = ['a', 'b', 'c'];
Array1 = ['c', 'd', 'e'];
Array2 = ['x', 'a', 'd'];
...

/*
doStuff() is a recursive function whose argument is an abitrary length array
containing an arbitrary list of array names
e.g., anArr = ['Array1', 'Array0', 'Array1', 'Array2', ...]
*/

function doStuff(anArr) {

    for(i=0; i<anArr.length; i++)   {

      switch(anArr[i])  {
      case('Array0')    :   Array0.myMethod(); break;
      case('Array1')    :   Array1.myMethod(); break;
      case('Array2')    :   Array2.myMethod(); break;
      }

    }
}

有没有办法用一个语句替换switch()块:

<<array referenced by 'someArray'>>.aMethod()   //or
function aFunction (<<array referenced by 'someArray'>>){}

普通的Javascript,请 - 没有jquery或其他库。 感谢

2 个答案:

答案 0 :(得分:4)

首先使用对象。

var foo = {
  Array0 : ['a', 'b', 'c'];
  Array1 : ['c', 'd', 'e'];
  Array2 : ['x', 'a', 'd'];
}

然后你可以:

foo[anArr[i]].myMethod();

答案 1 :(得分:3)

您可以将实际数组存储在数组中......

Array0 = ['a', 'b', 'c'];
Array1 = ['c', 'd', 'e'];
Array2 = ['x', 'a', 'd'];

var anArr = [Array0, Array1, Array2];
for(i=0; i<anArr.length; i++) {
    anArr[i].myMethod();
}