首页 > 获取树形结构某个节点路径

获取树形结构某个节点路径

后端传来的树形结构,
前端现在要根据最里面的那个id值获取路径

[
    id: 5,
    name: "root",
    children: [{
        id: 6,
        name: "北京市",
        children: [{
            id: 7,
            name: "西城区",
            children: [{
                id: 8,
                name: "xx居委会"
            }]
        }]
    }]
]

后端只返回最里面的id=8,
我希望获得最里面那个节点,用name组织的节点路径

root/北京市/西城区/xx居委会

有什么好的方法吗?


这不是递归循环吗?

楼主可以使用递归方法获取name值,如果没有值则跳出循环


首先,楼主你的数据格式是有问题的,对象不能使用[],应该是{},比如:

var address = [{
    id: 5,
    name: "root",
    children: [{
        id: 6,
        name: "北京市",
        children: [{
            id: 7,
            name: "西城区",
            children: [{
                id: 8,
                name: "xx居委会"
            }]
        }]
    }]
}]

要逐层解析并获取地址,应该来说使用递归的方法,这里用javascript写了一个实现:

var path = [];
var parse = function(data){
    var obj = data[0];
    if (obj.name){
        path.push(obj.name);
    }
    if(obj.children){
        obj = obj.children;
        parse(obj);
    }else{
        return;
    }
}
parse(address);
console.log(path.join("/"));

就可以得到你像要的地址了:

root/北京市/西城区/xx居委会
【热门文章】
【热门文章】