【问题标题】:How to address dynamic object keys [duplicate]如何解决动态对象键[重复]
【发布时间】:2014-02-13 08:44:49
【问题描述】:

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

 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;

【问题讨论】:

  • 我在 JSON 数据中,数组值作为对象作为名称数组;这个名字数组是动态值,这个值是动态值。

标签: javascript arrays json object


【解决方案1】:

如果您不知道对象的键,但需要对象中存在的所有键,您可以使用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

【讨论】:

    猜你喜欢
    • 2010-12-13
    • 2017-11-26
    • 2013-06-08
    • 2017-02-23
    • 2015-09-08
    • 2018-05-20
    • 2018-12-05
    • 2013-11-19
    相关资源
    最近更新 更多