我正在尝试调用字符串变量来引用数组变量。
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]);
答案 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]"));
我不推荐它,但如果您完全掌控了传入它的文本,那么它是可行的。但是,使用对象要好得多。