js tree遍历叶子节点给指定叶子节点加上属性

209 阅读1分钟

工作中常常使用到tree数据

需要对tree数据进行处理 遍历添加属性

我们来模拟一个后台返回数据
如下

``` let arr = [{
            children: [{
                children: [],
                isOrg: true
            }],
            isOrg: true
        }, {
            children: [{
                children: [{
                    children: [],
                    isOrg: true
                }, {
                    children: null,
                    isOrg: false
                }],
                isOrg: true
            }],
            isOrg: true
        }, {
            children: [{
                children: [{
                    children: null,
                    isOrg: false
                }, {
                    children: null,
                    isOrg: false
                }],
                isOrg: true
            }],
            isOrg: true
}]

     function addAttribute(data) { // tree结构递归添加属性
            for (var i = 0; i < data.length; i++) {
                //区分父节点和带isOrg=false的叶子节点
                if (data[i].children == null && !data[i].isOrg) {
                    data[i].children = []
                } //给isOrg=true 的叶子节点加上 showInput属性
                if (data[i].children.length == 0 && data[i].isOrg) {
                    data[i].showInput = false
                }
                if (data[i].children && data[i].children.length > 0) {
                    this.addAttribute(data[i].children)
                }
            }
            return data
        }
        let a = addAttribute(arr)
        console.log(a);