2017-05-09 119 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]); 
 
    } 
 
    
 
}