树状js处理

var list = [
        { id: 1, name: 'AAAA', parent_id: 0},
        { id: 2, name: 'BBBB', parent_id: 0},
        { id: 3, name: 'AAAA1', parent_id: 1},
        { id: 4, name: 'AAAA2', parent_id: 1},
        { id: 5, name: 'BBBB1', parent_id: 2},
        { id: 6, name: 'AAAA11', parent_id: 3},
        { id: 7, name: 'AAAA12', parent_id: 3},
        { id: 8, name: 'BBBB11', parent_id: 5},
        { id: 9, name: 'BBBB12', parent_id: 5}
    ]
    //list 转成树形json
    var tree=listToTree(list,0);            //调用函数,传入要转换的list数组,和树中顶级元素的pid
    //处理
    var option_data = creatSelectTree(tree);//调用函数,处理数据
    //list 转成树形json
    function listToTree(list,parent_id) {
        var ret = [];
        for(var i in list) {
            if(list[i].parent_id == parent_id) {
                list[i].children = listToTree(list, list[i].id);
                ret.push(list[i]);//把当前项保存到临时数组中
            }
        }
        return ret;//递归结束后返回结果
    }
    //处理
    var j="-";
    function creatSelectTree(tree) {
        var option = [];
        for (var i = 0; i < tree.length; i++) {
            if(tree[i].children.length){//如果有子集
                option.push({id:tree[i].id,name:j+tree[i].name});
                j+="-";//前缀符号加一个符号
                option = option.concat(creatSelectTree(tree[i].children));
                j=j.slice(0,j.length-1);//每次递归结束返回上级时,前缀符号需要减一个符号
            }else{//没有子集直接显示
                option.push({id:tree[i].id,name:j+tree[i].name});
            }
        }
        return option;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值