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

时间:2015-01-22 10:39:50

标签: javascript jquery

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

请看一下整个场景。

1st - 将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];

4th - array / obj

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

3 - 尝试获取数组的val

 console.log(c0[c1]);

结果 - undefined

有人可以给我解决方案,只需拨打content.login即可记录c0[c1]的确切值吗?

2 个答案:

答案 0 :(得分:1)

您可以通过将变量传递给窗口来调用变量: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

答案 1 :(得分:0)

您正在分配单个元素而不是数组:

var c0 = c.split('.')[0]; //Take 1st element of array

所以你不能尝试像你一样访问数组元素:

c0[c1]

只需打印c0。