JS 将json数组转为嵌套层级数组

ele UI 的树级菜单的数据要求是这种嵌套的,但是Ztree的老用发的是

var zNodes =[
            { id:1, pId:0, name:"zTree Home", pid:0},
            { id:2, pId:0, name:"zTree in Google",pid:0},
       { id:3, pId:0, name:"zTree in Iteye",pid:1}]

这种以pid来识别父级关系的,话不多说转换

  //将数组转成嵌套的
                buildTree (arr) {
                    let temp = {}
                    let tree = {}
                    // 数组转 键值对
                    arr.forEach(item => {
                        temp[item.id] = item
                    })

                    let tempKeys = Object.keys(temp)
                    tempKeys.forEach(key => {
                        // 获取当前项
                        let item = temp[key]
                        // 当前项 pId
                        let _itemPId = item.pid
                        // 获取父级项
                        let parentItemByPid = temp[_itemPId]
                        if (parentItemByPid) {
                            if (!parentItemByPid.children) {
                                parentItemByPid.children = []
                            }
                            parentItemByPid.children.push(item)
                        } else {
                            tree[item.id] = item
                        }
                    })
                    // 对象转数组并返回
                    return Object.keys(tree).map(key => tree[key])
                },

 

 

 

!!!

 

转载于:https://www.cnblogs.com/wlphp/p/10542344.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值