我試圖遍歷一個可以有幾個級別的數組的對象。通過嵌套對象/數組迭代
例如,
我開始:
var htmlString = {
"div": [{
"attributes": {
"class": "myDivClass"
},
"p": [{
"attributes": {
"class": "myPClass"
}
}]
}]
};
現在讓我們添加別的東西:
var htmlString = {
"div": [{
"attributes": {
"class": "myDivClass"
},
"p": [{
"attributes": {
"class": "myPClass"
},
"span": [{
"attributes": {
"class": "mySpanClass"
}
}]
}]
}]
};
我的工作將具有相同類型的形狀作爲代碼:
var childNode = document.createElement("myChildElement");
for (key in value) {
if (value.hasOwnProperty(key)) {
if (key == "attributes") {
childNode.setAttributes(myAttributes); // loop through attributes on the element
}
else {
//the same code ad infinitum
var childChildNode = document.createElement("myChildChildElement");
// etc etc....
}
}
}
parentNode.appendChild(childNode);
每個額外元素的規則是相同的,所以我應該能夠以相同的方式循環這個數據結構爲b其他代碼,我只是不知道如何,但我會打賭有一個while()循環在那裏。誰能告訴我?
P.S.原生javascript,請不要jQuery! (雖然,如果你有YUI3的答案,我會非常感興趣)。
您的示例中沒有JSON,只有JavaScript對象。對我來說,似乎你必須創建一個遞歸函數。 – 2012-08-01 17:07:03
這不是我正在處理的實際代碼,但JSONLint對此感到滿意,因爲它是有效的JSON。是的,遞歸函數正是我所要求的,謝謝。 – Jezcentral 2012-08-01 17:19:57
JSON是*數據交換格式*,它是JavaScript對象文字語法的一個子集,所以是的,某些對象文字也是有效的JSON,但這並不會使您的問題與JSON有任何關係。您正在問如何遞歸處理嵌套的JavaScript對象....與JSON沒有任何關係。我將更正您的問題... – 2012-08-01 17:21:54