javascript - 调用变量来引用数组

标签 javascript

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

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/

相关文章:

javascript - FancyBox - "Don' t 再次显示此消息“按钮?

javascript - DataTransfer 来自同一页面的图像提供 URL,但来自不同页面的图像提供文件

javascript - 单击透明图像上的 div

javascript - 网站中的页面 slider

javascript - 将文本输入的值与默认值进行比较

javascript - 在 angularjs 中实现缩短 url 功能

javascript - Strophe.js MUC : creating a room and joining more than one room

javascript - 定位元素但确保它仍在屏幕上

javascript - window.location 没有按预期工作

javascript - Angular - 将复选框从 ng-repeat 绑定(bind)到 ng-model