【发布时间】:2018-12-19 10:46:15
【问题描述】:
我有一个嵌套的 JSON 文件以创建下拉大型菜单级别,我不知道如何映射和渲染多个级别的数组和对象以创建树状结构。
以下是我的 JSON 结构:
{
"megamenu": [
{
"name": "level1.1",
"link": "#"
},
{
"name": "level1.2",
"link": "#",
"level1.2.1": {
"A": [
{
"name": "A-one",
"link": "#"
}
],
"B": [
{
"name": "B-one",
"link": "#"
}
]
}
},
{
"name": "level1.3",
"link": "#",
"children": [
{
"name": "level1.3.1",
"link": "#",
"children": [
{
"name": "level1.3.1.1",
"link": "#"
}
]
},
{
"name": "level1.3.1.2",
"link": "#",
"children": [
{
"name": "level1.3.1.2",
"link": "#"
}
]
}
]
}
]
}
我可以像这样映射第一级:
let menuArray = [];
let menu = this.props.menu.megamenu
console.log(menu);
for (let key in menu) {
menuArray.push(menu[key]);
return (
<section>
<ul>
{this.props.menu.megamenu.map((menuitem, index) = > (
<div key={index}>
<li>{menuitem.name}</li>
</div>
))}
</ul>
</section>
);
}
但想映射所有级别并显示如下结构:
<ul>
<li>Level1.1
<li>
<li>Level1.2
<div className="dropdown">
<ul>
<li>A</li>
<li>B</li>
</ul>
<ul>
<li>A-one</li>
<li>b-one</li>
</ul>
</div>
</li>
</ul>
<li>
<li>Level1.3
<div className="dropdown">
<div className="col">
<h2>level1.3.1</h2>
<ul>
<li>level1.3.1.1</li>
</ul>
</div>
<div className="col">
<h2>level1.3.2</h2>
<ul>
<li>level1.3.1.2</li>
</ul>
</div>
</div>
</li>
<ul>
我已尝试详细解释以便更好地理解,任何帮助将不胜感激。
【问题讨论】:
-
你应该编写一个递归函数来编写不确定的深度层次结构。
-
什么是
level1.2.1?应该是孩子 -
另外,你的结构看起来不一致,因为有时你有钥匙有时你有孩子,你需要先改变你的结构。
-
@AmerllicA : 你有这个递归函数的任何样本/示例吗?
-
@Justcode :是的,这种结构不一致,但这是我从 API 得到的,只有 JSON 的这一部分具有不同的结构。
{ "name": "level1.2","link": "#","level1.2.1": { "A": [ { "name": "A-one", "link": "#" } ], "B": [{"name": "B-one", "link": "#" }], } },
标签: javascript arrays json reactjs ecmascript-6