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