调用变量来引用数组

时间:2015-01-01 07:50:02

标签: javascript

我正在尝试调用字符串变量来引用数组变量。

message1[0][0] = "Hello."; // existing array
var caller = ['message1', 'message2', 'message3'];

alert(message1[0][0]);

但是我没有在alert中使用message1数组,而是想使用caller [0](等于" message1"),以便显示" Hello"。你怎么做到这一点?这似乎不起作用:

alert(caller[0][0][0]);

1 个答案:

答案 0 :(得分:2)

最好的方法是将message1放在一个对象上,然后使用[]表示法索引到该对象:

var obj = {
  message1: [
    ["Hello.", "two", "three"]
    ]
};
var caller = ['message1', 'message2', 'message3'];

alert(obj[caller[0]][0][0]);

如果message1是一个全局变量,它已经在一个对象上 - 全局对象,您可以在浏览器上以window访问该对象。因此,如果它是全球性的,您可以使用:

alert(window[caller[0]][0][0]);

但是全局变量是一个坏主意(tm),所以最好使用你自己的对象。


完全披露:你也可以使用eval来做这件事,但对于这么小的任务来说,这是一个很大的麻烦。只是为了完整性:

alert(eval(caller[0] + "[0][0]"));

我不推荐它,但如果您完全掌控了传入它的文本,那么它是可行的。但是,使用对象要好得多。