javascript - 通过引用对象和键作为字符串来获取数组/对象值

标签 javascript jquery

我试图通过传递从数据属性中分割出来的 KEY 来获取数组/对象的值。

请看一下整个场景。

第一个 - 将 data-* 传递给元素

 <a data-action='{"content":"content.login"}' ... >val</a>

第二 - 获取数据属性值

 var da = ele.data("action");
 var c = da.content;
 var c0 = c.split('.')[0];
 var c1 = c.split('.')[1];

第四个 - 数组/obj

 var content = {
    login : "..."
 };

第三 - 尝试获取数组的val

 console.log(c0[c1]);

结果 - 未定义

有人可以给我解决方案,以便通过简单地调用 c0[c1] 来记录 content.login 的确切值吗?

最佳答案

您可以通过将字符串传递给窗口来调用该变量:window[c0][c1]

var content = {
   login : "awesome"
};

var data = $('div').data('data');
var c = data.content;

var c0 = c.split('.')[0];
var c1 = c.split('.')[1];

console.log(c0, c1);

alert(window[c0][c1]); 
   // translates to window['content']['login'] => calls content.login
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div data-data='{"content":"content.login"}'></div>

注意:如果您处于函数闭包中,则可以使用 this 而不是 window

关于javascript - 通过引用对象和键作为字符串来获取数组/对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28086698/

相关文章:

javascript - 请在 JSfiddle 中使用 POST 请求

javascript - 仅使用 HTML 和 Javascript 进行开发?

javascript - 返回多个类型的函数,以逗号分隔。 Typescript 中的内容是什么?

javascript - 如何在 angularjs 中的指令内使用 JSON 数组过滤器?

c# - jQuery ajax - 通过 GET 传递多个参数

javascript - 无论文本有多大,都使文本适合框

javascript - jQuery/CSS 动画 div 从左到右的宽度

javascript - JQuery 在多个 Div 上显示/隐藏

javascript - 如何使用javascript求数组元素之和?

jquery - 单击时将 'p' 移至 'div'。 - 动画不起作用