输入:
const arrs = [
{
name: '广东',
children: [
{
name: '深圳',
children: [
{
name: '南山区',
children: []
}
]
},
{
name: '广州',
children: [
{
name: '白云区',
children: []
}
]
}
]
},
{
name: '上海',
children: [
{
name: '浦东新区',
children: []
}
]
},
{
name: '北京',
children: [
{
name: '朝阳区',
children: []
}
]
}
]
输出:
[
{
name: '广东',
children: [
{
name: '深圳',
children: []
},
{
name: '广州',
children: []
}
]
},
{
name: '上海',
children: []
},
{
name: '北京',
children: []
}
]
如上所示,删除了区的那一层,保留到市。
function removeLevel(arrs) {
// todo
}
###function removeLevel(arr) {
function map(arr) {
return isCity(arr) ? [] : arr.map(v => ({...v, children: map(v.children)}))
}
function isCity(arr) {
return arr.length && arr[0].name.includes('区');
}
return map(arr)
}
###function removeLevel(arrs, keep) {
function innerRemove(arrs, level, depth = 0) {
return depth >= level ? [] :
arrs.map(item => ({...item, children: innerRemove(item.children, level, depth + 1) }));
}
return innerRemove(arrs, keep);
}
// 保留 1 层
removeLevel(arrs, 1);
// 保留 2 层
removeLevel(arrs, 2);