javascript - 递归Javascript

标签 javascript recursion

给定一个数据结构如下:

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/

相关文章:

c++ - 在 C++ 中从二叉搜索树(递归)复制叶子

javascript - 我应该将跟踪/分析 JS 代码放在开始 <body> 标记之后还是结束 <body> 标记之前吗?

javascript - 当页面打开时,如何将jVectorMap中的 'markerStyle'设置为 'selected'?

javascript - 如果不使用 "background-attachment: fixed !important; "渐变就不起作用?还有什么选择呢?

java - 如何模拟递归函数中使用的外部函数?

c++ - 如何在编译时使用 C++ 模板存储递归函数的中间结果?

javascript - 刷新时背景随机变化

javascript - 修改来自 google.translate.TranslateElement 结果的元素

python - 如何在 Python 中使用递归查找素数

c++ - 计算 n 个数字之和的递归函数的意外输出