2017-05-09 10 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

の可能性のある重複(http://stackoverflow.com/questions/684672/how-do-iを介してIループを実行するか、JavaScriptオブジェクトを列挙する方法は?] -loop-through-or-enumerate-a-javascript-object) –

+1

内部でオブジェクトをループするために再帰を行う必要があります。 – epascarello

+0

@epascarello彼らは_justを返しました。なぜなら、それらが再帰を必要としているかどうかわからないからです。 –

答えて

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]); 
 
    } 
 
    
 
}

関連する問題