首先,假设有一个包含父级和子级的嵌套对象数组,数据结构如下:
const data = [
{
id: 1,
name: 'Parent 1',
children: [
{
id: 2,
name: 'Child 1',
children: []
},
{
id: 3,
name: 'Child 2',
children: [
{
id: 4,
name: 'Grandchild 1',
children: []
},
{
id: 5,
name: 'Grandchild 2',
children: []
}
]
}
]
},
{
id: 6,
name: 'Parent 2',
children: [
{
id: 7,
name: 'Child 3',
children: []
}
]
},
{
id: 8,
name: 'Parent 3',
children: []
}
];
我们可以使用递归函数来过滤出符合条件的父级和子级。下面是示例代码:
function filterData(data, condition) {
const result = [];
for (const item of data) {
if (condition(item)) {
// 如果当前父级符合条件,则添加到结果中
result.push(item);
// 如果当前父级有子级,则递归处理子级
if (item.children && item.children.length > 0) {
const filteredChildren = filterData(item.children, condition);
if (filteredChildren.length > 0) {
// 将筛选出来的子级添加到当前父级下
item.children = filteredChildren;
} else {
// 如果没有符合条件的子级,则删除子级
delete item.children;
}
}
} else if (item.children && item.children.length > 0) {
// 如果当前父级不符合条件,但有子级,则递归处理子级
const filteredChildren = filter
上一篇:按字节长度细分一个变量
下一篇:按子聚合结果升序排序