Javascript中的递归循环

Javascript中的递归循环,javascript,arrays,json,for-loop,recursion,Javascript,Arrays,Json,For Loop,Recursion,我尝试使用递归循环将某些属性写入html,但无法使代码正常工作:( 正如您在Json中看到的那样,我有一个哈希数组。它具有以下属性:serno-序列号,parent_serno-parent的序列号,name-属性的名称。我想先写下每个hash.name中的parent_serno==0,然后在每个hash.name之后,我想写下具有“parent_serno=serno(第一个hash)”的哈希的名称这是根据serno和parent_serno对它们进行分组 你们能告诉我我做错了什么吗 va

我尝试使用递归循环将某些属性写入html,但无法使代码正常工作:(

正如您在Json中看到的那样,我有一个哈希数组。它具有以下属性:serno-序列号,parent_serno-parent的序列号,name-属性的名称。我想先写下每个hash.name中的parent_serno==0,然后在每个hash.name之后,我想写下具有“parent_serno=serno(第一个hash)”的哈希的名称这是根据serno和parent_serno对它们进行分组

你们能告诉我我做错了什么吗

 var dataBase = [{"serno": 1, "parent_serno": 0, "name": "Home"},
            {"serno": 2, "parent_serno": 0, "name": "Search"},
                {"serno": 10, "parent_serno": 2, "name": "Search Payment"},
            {"serno": 11, "parent_serno": 2, "name": "Problematic Search Payment"},
            {"serno": 12, "parent_serno": 2, "name": "Cash Error"},
            {"serno": 13, "parent_serno": 2, "name": "Payment Note"},
            {"serno": 89, "parent_serno": 2, "name": "Search Payment By Category"},
            {"serno": 131, "parent_serno": 2, "name": "Search Payment New"},
            {"serno": 3, "parent_serno": 0, "name": "User Mangement"},
            {"serno": 4, "parent_serno": 0, "name": "Service Provider"},
            {"serno": 5, "parent_serno": 0, "name": "General"},
            {"serno": 88, "parent_serno": 5, "name": "Balance and Financial"},
            {"serno": 14, "parent_serno": 5, "name": "My Subagents"},
            {"serno": 15, "parent_serno": 5, "name": "My Providers"},
            {"serno": 16, "parent_serno": 5, "name": "My Dealers"},
            {"serno": 17, "parent_serno": 5, "name": "My Wallets"},
            {"serno": 19, "parent_serno": 5, "name": "Accounts"},
            {"serno": 45, "parent_serno": 19, "name": "Bank Accounts"},
            {"serno": 46, "parent_serno": 19, "name": "Transfers"},
            {"serno": 0, "parent_serno": 5, "name": "My Statements"},
            {"serno": 47, "parent_serno": 20, "name": "My Terminals"}];

        var funkcia = function(parent) {
            for (var i=0, i < dataBase.length, i++){
                if (dataBase[i].parent_serno == parent){
                    document.write(dataBase[i].name);
                    parent = dataBase[i].serno;
                    funkcia(parent);
                };
                  };
                    };

funkcia(0);
var数据库=[{“serno”:1,“parent_serno”:0,“name”:“Home”},
{“serno”:2,“parent_serno”:0,“name”:“Search”},
{“serno”:10,“parent_serno”:2,“name”:“Search Payment”},
{“serno”:11,“parent_serno”:2,“name”:“有问题的搜索支付”},
{“serno”:12,“parent_serno”:2,“name”:“Cash Error”},
{“serno”:13,“parent_serno”:2,“name”:“Payment Note”},
{“serno”:89,“parent_serno”:2,“name”:“按类别搜索付款”},
{“serno”:131,“parent_serno”:2,“name”:“Search Payment New”},
{“serno”:3,“parent_serno”:0,“name”:“User management”},
{“serno”:4,“parent_serno”:0,“name”:“Service Provider”},
{“serno”:5,“parent_serno”:0,“name”:“General”},
{“serno”:88,“parent_serno”:5,“name”:“Balance and Financial”},
{“serno”:14,“parent_serno”:5,“name”:“My subagent”},
{“serno”:15,“parent_serno”:5,“name”:“My Providers”},
{“serno”:16,“parent_serno”:5,“name”:“我的经销商”},
{“serno”:17,“parent_serno”:5,“name”:“我的钱包”},
{“serno”:19,“parent_serno”:5,“name”:“Accounts”},
{“serno”:45,“parent_serno”:19,“name”:“Bank Accounts”},
{“serno”:46,“parent_serno”:19,“name”:“Transfers”},
{“serno”:0,“parent_serno”:5,“name”:“My Statements”},
{“serno”:47,“parent_serno”:20,“name”:“My Terminals”}];
var funkcia=函数(父函数){
对于(var i=0,i
这是您的问题。您正在更改
父变量
,但随后让for循环继续运行,现在正在搜索错误的
父变量

或者使用不同的变量:

function funkcia(parent) {
    for (var i=0; i < dataBase.length; i++){
        if (dataBase[i].parent_serno == parent){
            document.write(dataBase[i].name);
            var new_parent = dataBase[i].serno;
            funkcia(new_parent);
        }
    }
}
函数funkcia(父级){
对于(var i=0;i
或者根本没有:

function funkcia(parent) {
    for (var i=0; i < dataBase.length; i++){
        if (dataBase[i].parent_serno == parent){
            document.write(dataBase[i].name);
            funkcia(dataBase[i].serno);
        }
    }
}
函数funkcia(父级){
对于(var i=0;i
关闭块时,关闭方括号后不要使用分号
关闭方括号后
}
关闭块…感谢您的评论,但使用分号似乎并不能解决问题:(对,当然不是。现在已修复。但请注意,这仍然无法按预期工作,因为您的
数据库
我的语句
常规
之间存在循环关系。是的,我猜我输入了错误。我的语句应具有serno=0;您可能希望使用更正后的数据库更新您的问题。首页|搜索|搜索付款|有问题的搜索付款|现金错误|付款单|按类别搜索付款|搜索新付款|用户管理|服务提供商|一般|我的钱包|账户|银行账户|转账|我的对账单|首页|搜索|搜索付款|有问题的搜索付款|现金错误|付款单| Search按类别付款|搜索付款新|用户管理|服务提供商|一般|我的钱包|账户|银行账户|转账|我的对账单。我得到这个输出…它仍然有问题,但更接近:)谢谢你的回答。
function funkcia(parent) {
    for (var i=0; i < dataBase.length; i++){
        if (dataBase[i].parent_serno == parent){
            document.write(dataBase[i].name);
            funkcia(dataBase[i].serno);
        }
    }
}