给定一个数据结构如下:
var endpoints = {
// top level
"orders": {
url: "/orders",
// child
"sub-level": {
url: "/sublevel"
}
},
// users
"users": {
url: "/users",
// child
"another-sublevel": {
url: "/another-sublevel"
}
}
}
我如何在每次遇到 URL 时递归生成一个“Route”对象?我还需要跟踪 parent 的路线,所以:
var Route = function(name, url, parents) {
}
名称是关键(例如,顶级中的“订单”或“用户”)url 是显而易见的,“父级”是我们在深入每个级别时生成的某种堆栈。
我在写这篇文章时遇到了一些麻烦,我遇到了变量范围/通过引用与值传递属性以及各种其他怪异问题。
数据结构也不固定,但需要包含该信息。
最佳答案
举个例子
function recurse(obj, parents){
var prop;
parents = parents || [];
for(prop in obj){
if(typeof(obj[prop]) === 'string' && prop === 'url'){
//do something with url
console.log(obj[prop], parents.join('->'));
}else{
parents.push(prop);
recurse(obj[prop], parents);
parents = [];
}
}
}
recurse(endpoints);
关于javascript - 递归Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6054881/