删除树状结构数组最后一个层级

350 阅读1分钟

有时候我们会拿到一个树状结构的数组,但是前端展示时候又不想要最后一个层级,这时候我们该怎么删除最后一个层级呢?

var arr = [
    {
        label: '层级1',
        value: '数据1',
        children: [
            {
                label: '层级1-1',
                value: '数据1-1',
                children: [
                    {
                        label: '层级1-1-1',
                        value: '数据1-1-1',
                        children: []
                    },
                ]
            },
            {
                label: '层级1-2',
                value: '数据1-2',
                children: []
            },
        ]
    },
    {
        label: '层级2',
        value: '数据2',
        children: [
            {
                label: '层级2-1',
                value: '数据2-1',
                children: [
                    {
                        label: '层级2-1-1',
                        value: '数据2-1-1',
                        children: []
                    },
                ]
            },
            {
                label: '层级1-2',
                value: '数据1-2',
                children: []
            },
        ]
    }
]

以上我们给出了一个树状结构数组,接下来我们封装一个函数用来处理该数组,在这里我是用children是否为空作为判断条件,用来判断是否为末级,当然也可以用其他来作为判断标识。

function changeData (arr) {
    var newTree = arr.filter(item => item.children.length > 0)
    newTree.forEach(x => x.children && (x.children = changeData(x.children)))
    return newTree
}

接下来我们可以定义一个变量用来接收处理过后的数组,就得到一个删除最末级的一个新数组啦!!!

const newArr = changeData(arr)
console.log(newArr)