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