要获取数组中父级及其子级的所有材料(少数除外),我们可以使用递归方法来遍历数组并构建一个包含所有相关材料的树形结构。以下是一个示例代码,展示了如何实现这一功能:
// 假设我们有以下数据结构
const materials = [
{ id: 1, name: 'Material A', parentId: null },
{ id: 2, name: 'Material B', parentId: 1 },
{ id: 3, name: 'Material C', parentId: 1 },
{ id: 4, name: 'Material D', parentId: 2 },
{ id: 5, name: 'Material E', parentId: 2 },
{ id: 6, name: 'Material F', parentId: 3 },
// ... 其他材料
];
// 少数需要排除的材料ID列表
const excludeIds = [4, 6];
// 递归函数,用于获取父级及其子级的所有材料
function getMaterialsWithChildren(materials, excludeIds, parentId = null) {
return materials
.filter(material => material.parentId === parentId && !excludeIds.includes(material.id))
.map(material => ({
...material,
children: getMaterialsWithChildren(materials, excludeIds, material.id)
}));
}
// 调用函数并打印结果
const result = getMaterialsWithChildren(materials, excludeIds);
console.log(JSON.stringify(result, null, 2));
getMaterialsWithChildren
函数通过递归遍历数组,构建一个包含所有相关材料的树形结构。filter
方法用于筛选出符合条件的材料(即父级ID匹配且不在排除列表中)。map
方法用于将筛选出的材料转换为包含子级材料的树形结构。这个方法适用于需要构建树形结构的场景,例如:
通过这种方法,你可以有效地获取数组中父级及其子级的所有材料,并排除指定的少数材料。
领取专属 10元无门槛券
手把手带您无忧上云