Я пытаюсь выполнить итерацию объекта, который может иметь несколько уровней массивов.Итерация через вложенные объекты/массивы
Например.
Я начинаю с:
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. Мне кажется, что вам нужно создать рекурсивную функцию. –
Это не тот код, над которым я работаю, но JSONLint был доволен этим как действительный JSON. И да, рекурсивная функция для этого - именно то, о чем я прошу, спасибо. – Jezcentral
JSON, * формат обмена данными *, является подмножеством синтаксиса литералов объекта JavaScript, поэтому да, некоторые литералы объектов также действительны JSON, но это не делает вашу проблему иметь какое-либо отношение к JSON. Вы спрашиваете, как рекурсивно обрабатывать вложенные объекты JavaScript ... совсем не связанные с JSON. Я исправлю ваш вопрос ... –