2017-05-09 120 views
0

我有一个对象,里面有其他对象需要访问。我该怎么做?循环遍历对象并获取其他对象(javascript)

var obj = {a: {b: 1}} //I need to have access to b. 

正确的for循环只返回“a”。问题是我没有试图获取一个对象内的字符串,我得到一个对象内的对象。

var obj = { 
 
\t a: {r: "why cant i access"}, 
 
} 
 

 
for(var o in obj){ 
 
\t document.getElementById("div").innerHTML = o.r; 
 
}
<div id="div"></div>

+0

的可能的复制[我如何遍历枚举或JavaScript对象?(http://stackoverflow.com/questions/684672/how-do-i -loop-through-or-enumerate-a-javascript-object) –

+1

所以你需要做递归来遍历内部的对象。 – epascarello

+0

@epascarello他们写了_just返回“a”_,所以我不确定他们是否需要递归,这就是为什么我把它标记为问题的重复而没有递归 –

回答

1

虽然张贴了的Piyush答案,感谢你们给予对象的工作,它不是通用的,不会为所有类型的对象的工作。这里有一个脚本来读取任何对象的属性:

var obj = {a: {b:'2'}}; 

var writeProperties = function (obj) { 
    for(var prop in obj) { 
    console.log("Property: ",prop,"Property Type:",typeof(obj[prop])); 
    if(typeof(obj[prop]) == 'object') { 
     writeProperties(obj[prop]); 
    } else { 
     console.log(prop + ':' + obj[prop]); 
    } 
    } 
} 

writeProperties(obj); 
1

如果你的对象结构在你的问题中提到的固定,可以循环两次以获得内心的对象。

var p = {a: {b: 1}} 
 
for (var key in p) { 
 
    for (var k in p[key]) { 
 
    console.log(k + " -> " + p[key][k]); 
 
    } 
 
    
 
}