javascript - 从 json 响应创建列表菜单
问题描述
我正在做一个项目,我正在获取下面的 JSON 输出并希望从中创建一个菜单。使用 JavaScript 具有父子菜单的组:
myArray = [
{group: "one", color: "red"},
{group: "two", color: "blue"},
{group: "one", color: "green"},
{group: "one", color: "black"}
]
我想要下面的 html 输出
One
red
green
black
Two
blue
<ul class="nested">one
<li><a href=“red”>red</li>
<li><a href=“green”>green</li>
<li><a href=“black”>black</li>
</ul>
<ul class="nested">two
<li><a href=“blue”>blue</li>
</ul>
解决方案
这里的第一步是通过group
属性键入数组。我会做这样的事情:
let keyedMenu = {};
myArray.forEach((item) => {
if (!keyedMenu[item.group]) {
keyedMenu[item.group] = [];
}
keyedMenu[item.group].push(item);
});
现在您的数据结构如下所示:
{
one: [
{ group: 'one', color: 'red' },
{ group: 'one', color: 'green' },
{ group: 'one', color: 'black' }
],
two: [
{ group: 'two', color: 'blue' }
]
}
下一步是从此数据结构创建标记:
let markup = ``;
Object.keys(keyedMenu).forEach((key) => {
markup += `<ul class="nested">${ key }`;
keyedMenu[key].forEach((item) => {
markup += `<li><a href="${ item.color }">${ item.color }</a></li>`;
});
markup += `</ul>`;
});
最后,您需要将此标记注入 DOM:
$('target-element-selector').html(markup);
推荐阅读
- haskell - Haskell中Monad中的“刚性类型变量”问题
- wso2 - WSO2EI 7.x 中缺少 JsonUtil
- regexp-substr - 为什么 Oracle SQL 函数 regexp_substr 不返回所有匹配字符?
- css - 使用伪元素 (::before) 作为跳转链接目标在 CSS 中不起作用
- c# - EF Core 'The DbFunction 'ÉmpContext.fnGetEmployeeEligibility' 在调用表值函数时具有无效的返回类型 'ÉmpMaster''
- html - 如何使用具有不同父级的 CSS 选择器获取最后匹配的元素?
- java - 无法解析模块/未解决的需求 org.eclipse.core.runtime
- git - git rebase --interactive | 重命名路径案例失败
- html - 是所有 URL 都被视为 API 端点,还是仅被视为 api.company.com/...之类的那些?
- python - 具有列表理解的字典