我想通过递归将这些代码块转换成更小的代码块,但是我卡住了我正在使用for
循环的地方。如何递归编写代码?
我的下一个词典:var structure = [];
结构为:
"path": path,
"children": []
我通过我的解析JSON文件填充它。其中一条来自JSON的路径如下所示:"path": "Assignment_1/src/com",
,所以我正在解析路径/
,并试图在我的structure
字典中重建此结构。第一部分,"path": "Assignment_1/",
我正在放入我的结构中。第二部分"path": "Assignment_1/src/",
我把里面的children
字典等等。
没有递归我这样做:
if(path.split("/").length == 2) {
if(type == "tree") {
var path0 = path.split("/")[0];
var path1 = path.split("/")[1];
for(var j = 0; j < structure.length; j++) {
var foundPath = structure[j]["path"];
if(foundPath == path0) {
structure[j]["children"].push({
"path": path1,
"children": []
})
}
}
}
}
if(path.split("/").length == 3) {
if(type == "tree") {
var path0 = path.split("/")[0];
var path1 = path.split("/")[1];
var path2 = path.split("/")[2];
for(var j = 0; j < structure.length; j++) {
var foundPath = structure[j]["path"];
if(foundPath == path0) {
for(var k = 0; k < structure[j]["children"].length; k++) {
var foundPath = structure[j]["children"][k]["path"];
if(foundPath == path1) {
structure[j]["children"][k]["children"].push({
"path": path2,
"children": []
})
}
}
}
print(structure);
}
}
}
现在我想统一它,所以它会自动通过所有文件夹和填补我structure
字典。我开始与while
循环,但这部分:
structure[j]["children"].push({ })
structure[j]["children"][k]["children"].push({ })
太难程序。任何帮助或建议将帮助我很多!
UPDATE
输入是(一个部分):
{
"path": "Folder_1/src/com",
"mode": "040000",
"type": "tree"
},
输出:
使用'reduce'可以提供帮助。 – OmG
@ j.doe请提供示例输入/输出 –
@Jonasw我已添加。我希望这会有所帮助。如果你需要什么,请问我,请! –