Ситуация: у меня есть большой объект, содержащий несколько суб и суб-объектов, со свойствами, содержащими несколько типов данных. Для наших целей этот объект выглядит примерно так:
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/