我正在尝试调用字符串变量来引用数组变量。
message1[0][0] = "Hello."; // existing array
var caller = ['message1', 'message2', 'message3'];
alert(message1[0][0]);
但是我不想在警报中使用 message1 数组,而是想使用 caller[0] (等于“message1”),以便它显示“Hello”。你怎么做到这一点?这似乎不起作用:
alert(caller[0][0][0]);
最佳答案
最好的方法是将 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]"));
我不推荐它,但只要您完全控制传递给它的文本,它就是可行的。不过,使用对象要好得多。
关于javascript - 调用变量来引用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27729148/