gpt4 book ai didi

javascript - 当第 n 个嵌套数组不再有嵌套数组时停止的递归函数

转载 作者:行者123 更新时间:2023-12-02 19:05:09 25 4
gpt4 key购买 nike

我有一个 JSON 文档,其中有一些嵌套数组。我想要制作 function AAA() ,如果数组有嵌套数组,它就会每次调用。然后当没有更多嵌套数组时停止。

例如。如果我有:

         array[AAA,BBB,CCC]
|
AAA[AAA,BBB,CCC]
|
AAA[AAA,BBB,CCC]
|
etc.

AAA有子数组时,我想总是调用function AAA()。假设 AAA 有 5 倍 subAAA。我希望 function(AAA) 调用自身 5 次然后停止。如果将来我添加更多子数组来调用更多次。

如果有帮助的话,这是我的.json:

{
"navigation" : [

{
"name" : "home",
"href" : "home.html"
},

{
"name" : "services",
"href" : "interior.html",
"navigation" : [
{
"name" : "PROJECT MANAGEMENT",
"href" : "interior.html",
"navigation" : [
{
"name" : "PROJECT MANAGEMENT",
"href" : "interior.html"
},
{
"name" : "BUSINESS ANALYST",
"href" : "interior.html"
}
]
},
{
"name" : "BUSINESS ANALYST",
"href" : "interior.html"
}
]
},

{
"name" : "company",
"href" : "home.html"
}


]
}

js代码是:

function parseJSON(){

var navigation = new_json['navigation'];
var nav_html = '';

for (var i = 0; i < navigation.length; i++) {

var name = navigation[i]['name'];
var href = navigation[i]['href'];
var submenu = navigation[i]['navigation'];

nav_html += '<li><a href="' + href + '">' + name + '<span class="ddArrow"></span></a>';

if( typeof(submenu) != 'undefined' ){
nav_html += '<ul>';

for( var j=0; j<submenu.length; j++ ){

var submenu_name = submenu[j]['name'];
var submenu_href = submenu[j]['href'];

nav_html += '<li><a href="' + submenu_href + '">' + submenu_name + '</a></li>';
}
nav_html += '</ul>';
}
nav_html += '</li>';
console.log( nav_html );
$('#navigation ul').html( nav_html );
};
};

这样我想创建具有子菜单的导航。现在我有 3 个级别,但如果我决定添加第 4 级和第 5 级。我希望我的代码能够在 HTML 中解析它们,而无需编写更多代码。剩下的我都有了...我只需要在函数停止时使用 IF

我只是不写我尝试过的内容,因为我明白为什么不起作用。

最佳答案

递归函数的构建非常简单,并且与您已有的代码非常相似:

function parseJSON() {
function makeList(navigation) {
var nav_html = '';
for (var i = 0; i < navigation.length; i++) {
var name = navigation[i]['name'],
href = navigation[i]['href'],
submenu = navigation[i]['navigation'];

nav_html += '<li><a href="' + href + '">' + name + '<span class="ddArrow"></span></a>';

if( typeof(submenu) != 'undefined' ){
nav_html += '<ul>';
// now here, do not iterate it again!
// call the function recursively!
nav_html += makeList(submenu);
nav_html += '</ul>';
}
nav_html += '</li>';
}
return nav_html;
}
$('#navigation ul').html( makeList( new_json['navigation'] ) );
}

关于javascript - 当第 n 个嵌套数组不再有嵌套数组时停止的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14381253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com