循环对象并获取其他对象(javascript)

时间:2017-05-09 16:37:51

标签: javascript loops object for-in-loop

我有一个对象,里面有我需要访问的其他对象。我该怎么做?

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

对于for循环,只返回“a”。问题是我不是试图在对象中获取字符串,而是在对象内部获取对象。

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

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

2 个答案:

答案 0 :(得分:1)

如果您的问题中提到的对象结构是固定的,则可以循环两次以获取内部对象。

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

答案 1 :(得分: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);