调用变量引用数组
Calling a variable to reference an array
我正在尝试调用一个字符串变量来引用一个数组变量。
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]"));
我不推荐它,但如果您完全控制传递给它的文本,它是可行的。不过,使用对象要好得多。
我正在尝试调用一个字符串变量来引用一个数组变量。
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]"));
我不推荐它,但如果您完全控制传递给它的文本,它是可行的。不过,使用对象要好得多。