【发布时间】:2020-05-14 11:38:12
【问题描述】:
这应该是一个简单的问题,但由于某种原因,我碰壁了。
我有一个复杂度未知的 JSON 对象,它可能包含其他对象、数组或字符串属性。
例如,我可能有这样一个对象:
let json = {
id: "foo",
rows: [
{
class: "blah",
cols: [
{
class: "haha"
},{
class: "bar"
},{
class: "baz"
}
]
},
{
class: "yada"
}
]
}
*注意(为清楚起见):该对象可能具有广泛不同的结构。它可能将行和列颠倒,或者嵌套得更深,或者根本没有。任何对象上可能有也可能没有 id 或类 *
我需要遍历该对象并将其“转换”为 html 结构,如下所示:
<div id = "foo" data-type = "rows">
<div class = "blah" data-type = "cols">
<div class = "haha"></div>
<div class = "bar"></div>
<div class = "baz"></div>
</div>
<div class = "yada"></div>
</div>
其中每个对象是一个(可能是嵌套的)div,字符串属性是该 div 上的属性,数组键表示一个类型。
这是我目前得到的:
function iterateJsonToHTML(frame) {
let content = document.createElement("div");
let iterator = function(frame, content) {
for (let [key, value] of Object.entries(frame)) {
if (Array.isArray(value) || (typeof value === "object" && value !== null) ) {
if (Array.isArray(value)) {
iterator(value, content);
} else if (typeof value === "object") {
let element = document.createElement("div");
content = content.appendChild(element);
iterator(value, content);
}
} else {
// dealing with attributes here. Not sure how to parse multiple of these.
}
}
};
iterator(frame, content);
return content;
}
这会创建一个 HTML 结构,但不是我所期望的:
<div>
<div>
<div>
<div>
<div></div>
</div>
</div>
<div></div>
</div>
</div>
它有正确数量的divs,它们只是以某种方式旋转。
所以我的问题很简单:
我的递归哪里出错了?
【问题讨论】:
标签: javascript html json recursion iteration