js处理层级数组对象(以parent和children判断)

 var oriArray = [ {

            id: 6,

            text: '网路技术',

            parent: 5,

        },   {

            id: 2,

            text: '研发计划',

            parent: 1

        },   {

            id: 3,

            text: '产品方案',

            parent: 1

        },   {

            id: 5,

            text: '技术方案',

            parent: 2

        },   {

            id: 4,

            text: '第二主体'

        },   {

            id: 1,

            text: '中心主题',

            children: [{

                id: 8,

                text: '111',

                parent: 1

            }]

        }, {

            id: 7,

            text: '77777',

            parent: 5

        }, ]

function getNewArr(metaArray) {

    var newArr = []

    metaArray.forEach((item, i) => {

        if (!item.hasOwnProperty('parent')) {

            newArr.push(item)

        } else {

            getChildren()

        }

    })

    function getChildren(arr = newArr) {

        metaArray.forEach((item, i) => {

            arr.forEach(item1 => {

                if (item.parent == item1.id) {

                    if (item1.hasOwnProperty('children')) {

                        var flag = item1.children.every(childrenItem => {

                            return childrenItem.id != item.id

                        })

                        if (flag) {

                            item1['children'].push(item)

                        } else {

                            return

                        }

                    } else {

                        item1['children'] = []

                        item1['children'].push(item)

                    }

                    getChildren(item1.children)

                }

            })

        })

    }

    return newArr

}

 console.log(getNewArr(oriArray));

输出结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值