如何处理动态对象键

时间:2014-02-13 08:44:49

标签: javascript arrays json object

我需要使用具有持久结构但不同键的动态键来访问对象属性,有时可能是:

 var ty_tabs=[{
                "key1" :[{
                           "d1" : "v1",
                           "d2" : "v2",
                           "d3" : "v3"
                }],
                "key2" :[{
                           "d1" : "v1",
                           "d2" : "v2",
                           "d3" : "v3"
                }]
             }]

和另一个:

 var ty_tabs=[{
                "key3" :[{
                           "d1" : "v1",
                           "d2" : "v2",
                           "d3" : "v3"
                }],
                "key4" :[{
                           "d1" : "v1",
                           "d2" : "v2",
                           "d3" : "v3"
                }]
             }]

如何采用我的代码:

var b,a,d1,d2,d3;
for (b = 0 , a = ty_tabs.length; b < a ; ++b){
    d1 = ty_tabs[b].key1[0].d1;
    d2 = ty_tabs[b].key1[0].d2;
    d3 = ty_tabs[b].key1[0].d3;
}

使用不同的密钥访问属性:

    d1 = ty_tabs[b].?[0].d1;
    d2 = ty_tabs[b].?[0].d2;
    d3 = ty_tabs[b].?[0].d3;

1 个答案:

答案 0 :(得分:0)

如果您不知道对象的键,但需要其中的所有键,您可以使用Object.keys()

var b,a,d1,d2,d3, i, keys;
for (b = 0 , a = ty_tabs.length; b < a ; ++b){
    keys = Object.keys( ty_tabs[b] );

    for( i=0; i<keys.length; i++ ) {
      d1 = ty_tabs[b][ keys[i] ][0].d1;
      d2 = ty_tabs[b][ keys[i] ][0].d2;
      d3 = ty_tabs[b][ keys[i] ][0].d3;
    }
}

Object.keys()得到了很好的支持。对于旧版本的IE,您可以使用polyfill provided at MDN