我需要使用具有持久结构但不同键的动态键来访问对象属性,有时可能是:
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;
答案 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