【问题标题】:build a path tree for URIs为 URI 构建路径树
【发布时间】:2017-02-05 12:31:03
【问题描述】:

我有一个需要为其创建树/对象结构的 URI 列表。例如这里是 URIs

/api/abc/xyz/abc/cde
/api/xyz/abc/d3/d2
/api/abc/cde/d3/d2
/api/abc/cde/d1/d2

结果树应该是这样的

{
    api: {
        abc: {
            xyz: {
                abc: {
                    cde: {}
                }
            },
            cde: {
                d3: {
                    d2: {}
                },
                d1: {
                    d2: {}
                }
            }
        },
        xyz: {
            abc: {
                d3: {
                    d2: {}
                }
            }
        }
    }
}

我需要用 javascript 来做这件事。有什么算法可以用来构建这个吗?我从下面的代码开始,但我有点迷路了!!

paths=['/api/abc/xyz/abc/cde', 
'/api/xyz/abc/d3/d2', 
'/api/abc/cde/d3/d2',
'/api/abc/cde/d1/d2' ];

 var apiResources = {};
    for(var i in paths) {
        var path = paths[i];
        //split by '/'
        var parts = path.split("/");
        var node = apiResources;
        for (var i = 0; i < parts.length; i++) {
            if (!node[parts[i]]) {
                node[parts[i]] = {};
            }
            node = node[parts[i]];
        }
    }

【问题讨论】:

  • 看起来很简单。你有没有尝试过?
  • @sudomakeinstall2 是的,我做到了。我现在在编辑中提出了我的代码。谢谢
  • 但这已经是你想要的了?不过,您可能想跳过第一个元素 (["", "api", "abc", "xyz", "abc", "cde"])。
  • 谢谢你,我想它工作了!! jsfiddle.net/theswcjc

标签: javascript algorithm graph-algorithm


【解决方案1】:
var string="a/b/c";
keys=string.split("/");
var obj={};
var index=obj;
for(let i=0;i<keys.length;i++){
index=index[keys[i]]={};
}

Obj 现在应该包含作为对象的字符串。您可以使用多个 atrings 重复此操作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多