gpt4 book ai didi

Javascript递归函数问题

转载 作者:行者123 更新时间:2023-12-03 03:39:59 25 4
gpt4 key购买 nike

我正在尝试创建一个函数,该函数将循环遍历数组层次结构并将它们连接在一起。我正在努力想办法做到这一点。

我调用一个 Web API,它返回一些具有相同属性和布局的数据,但在层次结构层数组的数量方面可能有所不同。

文件夹:文件夹可以包含“路由”,但也可以在其中包含另一个文件夹,该文件夹还可以包含更多“路由”等

路线:作为路线的单个对象。

例如:

{
"id":1,
"folders":[
{
"id":2,
"folders":[
{
"id":3,
"folders":[],
"routes":[]
}
],
"routes":[
{
"id":1002,
"name":"Route3"
},
{
"id":1003,
"name":"Route4"
}
]
}
],
"routes":[
{
"id":1000,
"name":"Route1"
},
{
"id":1001,
"name":"Route2"
}
]
}

我需要能够继续深入层次结构并将所有路由数组与文件夹数组连接起来,这样我就可以将 Kendo TreeView 与单个子项绑定(bind),该子项将成为文件夹数组。

到目前为止我已经尝试过:

for (var i = 0; i < Folders.length; i++) {
if (Folder[i].Folders.length > 0) {
for (var e = 0; e < Folder[i].Folder[e].length; e++) {
if (Folder[i].Folders[e].length > 0) {
...
}
}
}
}

该方法的问题是我永远不会知道会有多少层,因此不是一个可行的方法。

我需要的结果是上面的例子:

{
"id":1,
"folders":[
{
"id":2,
"folders":[
{
"id":3,
"folders":[

],
"routes":[

]
},
{
"id":1002,
"name":"Route3"
},
{
"id":1003,
"name":"Route4"
}
]
},
{
"id":1000,
"name":"Route1"
},
{
"id":1001,
"name":"Route2"
}
]
}

最佳答案

var flatRoutes = function(folders){
for(var i in folders){

var cur = folders[i];
if(cur.hasOwnProperty('folders')){
flatRoutes(cur.folders);
}

if(cur.hasOwnProperty('routes')){
for(var i in cur.routes){
cur.folders.push(cur.routes[i]);
}

delete cur.routes;
}

}

return folders;
}


var json = {
"id":1,
"folders":[
{
"id":2,
"folders":[
{
"id":3,
"folders":[],
"routes":[]
}
],
"routes":[
{
"id":1002,
"name":"Route3"
},
{
"id":1003,
"name":"Route4"
}
]
}
],
"routes":[
{
"id":1000,
"name":"Route1"
},
{
"id":1001,
"name":"Route2"
}
]
}


var routes = flatRoutes([json]);

console.log(routes);

关于Javascript递归函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45671129/

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