【发布时间】:2017-12-12 16:01:37
【问题描述】:
我想通过递归将这些代码段转换成更小的代码段,但我卡在了使用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({ })
太难编程了。任何帮助或建议都会对我有很大帮助!
更新
输入是(一部分):
{
"path": "Folder_1/src/com",
"mode": "040000",
"type": "tree"
},
输出:
【问题讨论】:
-
使用
reduce可以提供帮助。 -
@j.doe 请提供示例输入/输出
-
@Jonasw 我已经添加了。我希望这会有所帮助。如果您需要什么,请尽管问我!
-
请不要一遍又一遍地打电话给
path.split("/")。调用一次并保存结果。 -
Create nested object from multiple string paths 的可能副本 name 更改为 path 即可...
标签: javascript arrays json dictionary recursion