如果我们暂时不考虑类型安全,可以直接在JavaScript中使用简洁的方式来实现。
以下是简化版的实现:
function filterTreeData(data, keepFields) {
function processNode(node) {
const newNode = {};
for (let key in node) {
if (keepFields.includes(key)) {
newNode[key] = node[key];
}
// 特别处理children字段
if (key === 'children' && Array.isArray(node[key])) {
newNode[key] = node[key].map(child => processNode(child));
}
}
return newNode;
}
return data.map(node => processNode(node));
}
// 示例用法
const originalData = [
// ...
];
const keptFields = ['id', 'title']; // 指定要保留的字段
const filteredData = filterTreeData(originalData, keptFields);
console.log(filteredData);
这个简化版本的filterTreeData函数通过遍历节点的所有属性,仅复制包含在keepFields中的字段到新对象中。同时,它也递归处理子节点以保持树形结构。请注意,这种方法在TypeScript中不会提供严格的类型检查,但在实际运行时可以达到过滤树形结构多余字段的效果。
本文暂时没有评论,来添加一个吧(●'◡'●)