最佳答案
情境: 我有一个包含多个子对象和子对象的大对象,其属性包含多个数据类型。对于我们的目的,这个物体看起来像这样:
var object = {
aProperty: {
aSetting1: 1,
aSetting2: 2,
aSetting3: 3,
aSetting4: 4,
aSetting5: 5
},
bProperty: {
bSetting1: {
bPropertySubSetting : true
},
bSetting2: "bString"
},
cProperty: {
cSetting: "cString"
}
}
我需要遍历这个对象并构建一个显示层次结构的键列表,所以这个列表最终看起来是这样的:
aProperty.aSetting1
aProperty.aSetting2
aProperty.aSetting3
aProperty.aSetting4
aProperty.aSetting5
bProperty.bSetting1.bPropertySubSetting
bProperty.bSetting2
cProperty.cSetting
我得到了这个函数,它会循环访问对象并输出键,但不是分层的:
function iterate(obj) {
for (var property in obj) {
if (obj.hasOwnProperty(property)) {
if (typeof obj[property] == "object") {
iterate(obj[property]);
}
else {
console.log(property + " " + obj[property]);
}
}
}
}
有人能告诉我怎么做吗? 这里有一个 jsfiddle,你可以乱搞: http://jsfiddle.net/tbynA/