- 原文地址:https://segmentfault.com/q/1010000010795415
- 过滤type为1的数据,按原来的层次排列
- 把type为0的全过滤出来按原来的数据排列
{
name: '全部文件',
children: [
{name: 'hello',
type: 0,
children: []
},
{name: 'wat',
type: 1
},
{
name: 'child1',
type: 0,
children: [
{
name: 'child11',
type: 0,
children: [
{name: 'hello',
type: 1,
},
{name: 'wat',
type: 1,
}
]
},
{
name: 'child12',
type: 0,
children: [
{name: 'hello'
type: 0,
childen: []
},
{name: 'wat'
type: 1,
}
]
}
]
}
]
}
function getDataByType(type, data) {
if (!data || data.type !== type) {
return null;
}
if (data.type === type) {
if (!Array.isArray(data.children)) {
return data;
} else {
const children = data.children
.map(ele => {
return getDataByType(type, ele);
})
.filter(ele => ele !== null);
return {
type: data.type,
name: data.name,
children
};
}
} else {
return null;
}