我有一个JSON文件,用于存储导航面板(链接)的数据。简短版本如下:
[
{
"category": "Pages",
"links": [
{
"url": "#",
"caption": "Account",
"dropdown": [
{
"url": "profile.html",
"caption": "Profile"
},
{
"url": "edit-profile.html",
"caption": "Edit Profile"
}
]
},
{
"url": "orders.html",
"caption": "Orders"
},
{
"url": "faq.html",
"caption": "FAQ"
}
]
},
...
]
因此,当我使用jQuery为这些链接构建HTML代码时,我有3个嵌套的for
循环:
代码如下:
for (var i = 0; i < data.length; i++) {
...
for(var n = 0; n < data[i]["links"]; i++) {
...
for(var k = 0; k < data[i]["links"][n]["dropdown"]; k++) {
...
}
}
}
即使代码有效,我听说嵌套的for
循环也不好(代码看起来也有些可怕)。有没有办法取代它?这种新方法会使代码运行得更快吗?
答案 0 :(得分:2)
假设你有:
您当前的解决方案是O(nmo)
。无论您如何重新编写代码,都无法比此更好地优化时间复杂度。这是因为您绝对需要访问每个元素一次,优化超过O(nmo)
意味着您跳过一些元素。
嵌套for循环不好
这有点概括。更具体地说,当不需要嵌套for循环时,嵌套for循环是不好的。在你的情况下,他们是必要的。
您可以重写以获取可读性等,但您现在处于最佳案例表现状态。