使用以下代码:
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或其他库。 感谢
答案 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();
}