【发布时间】:2019-05-21 01:05:24
【问题描述】:
我有一个多维数组categories,我正在使用menuToElement 函数循环这个数组。
它获取array 及其子元素的所有元素,并在ul 中返回。代码可以正常工作,但我不知道如何只循环数组的一个元素及其所有子元素。
例如,我想要做的只是循环引擎元素及其所有子元素和所有子数组。我的问题是:我正在使用的 for...of 循环是否有可能实现这一点,因为我尝试循环遍历类别索引并且它说它是不可迭代的。
function menuToElement(menu) {
const ul = document.createElement("ul");
for (const item of menu) {
const li = document.createElement("li");
if (Object(item) === item) {
li.textContent = item.text + ' \u25BD';
li.appendChild(menuToElement(item.children));
} else {
li.textContent = item;
}
ul.appendChild(li);
}
return ul;
}
var categories = [{
text: "engine",
children: [1, 2, 3, {
text: "piston",
children: [4, 5, 6, {
text: "piston",
children: [4, 5, 6]
}]
}]
}, {
text: "tire",
children: [7, 8, 9]
}];
const ul = menuToElement(categories);
document.getElementById("menu").appendChild(ul);
li>ul {
display: none;
}
li:hover>ul {
display: block;
}
<div id="menu"></div>
【问题讨论】:
-
听起来像 filter() 应该有帮助:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
请同时显示您的无效代码。
-
我正在尝试但不起作用的是更改 const ul = menuToElement(categories); to const ul = menuToElement(categories[0]);
-
您想将界面从 menuToElement(Array) 更改为 menuToElement(Object)?
-
是的,我想这就是我想要的
标签: javascript html arrays multidimensional-array