使用element ui的el-tree多层级树形结构

var listData = [
    { "id": 1, "psn": null, "catalogSn": "003", "catalogName": "张三" },
    { "id": 2, "psn": null, "catalogSn": "026", "catalogName": "李四" },
    { "id": 3, "psn": null, "catalogSn": "030", "catalogName": "赵五" },
    { "id": 11, "psn": "030", "catalogSn": "030001", "catalogName": "老六" },
    { "id": 12, "psn": "030", "catalogSn": "030002", "catalogName": "小七" },
    { "id": 13, "psn": "026", "catalogSn": "026001", "catalogName": "小八1" },
    { "id": 14, "psn": "026", "catalogSn": "026002", "catalogName": "小八2" },
    { "id": 15, "psn": "026", "catalogSn": "026003", "catalogName": "小八3" },
    { "id": 16, "psn": "026003", "catalogSn": "026003001", "catalogName": "小九1" },
    { "id": 21, "psn": "026003", "catalogSn": "026003002", "catalogName": "小九2" }]
        

    function listToTree(list, idStr, pidStr, childrenStr) { //将每一个对象 根据 idStr 和pidStr 套在对象里面
        let result = []
        if (!list || list.length <= 0) {
            return result
        }
        let hash = {}
        let id = idStr || 'id'
        let pid = pidStr || 'pid'
        let children = childrenStr || 'children'
        let len = list.length
        let i = 0
        for (i = 0; i < len; i++) {
            hash[list[i][id]] = JSON.parse(JSON.stringify(list[i]))
            hash[list[i][id]]['depth'] = 0
            hash[list[i][id]]['leaf'] = true
        }
        for (i = 0; i < len; i++) {
            let aVal = hash[list[i][id]]
            let hashVP = hash[aVal[pid]]
            if (hashVP) {
            !hashVP[children] && (hashVP[children] = [])
            aVal['depth'] = hashVP['depth'] + 1
            hashVP[children].push(aVal)
            hashVP['leaf'] = false
            } else {
                aVal['depth'] = 0
                result.push(aVal)
            }
        }
        return result
}

let lists = listToTree(listData, 'catalogSn', 'psn')
console.log(lists);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值