function traverseAndCompare(tree, keys) {
// 遍历树形结构的数组对象
for (let i = 0; i < tree.length; i++) {
const node = tree[i];
// 检查当前节点的 key 是否在目标数组中存在
if (keys.includes(node.key)) {
// 如果存在,则删除当前节点
tree.splice(i, 1);
i--; // 更新索引值,以便下次正确遍历下一个节点
}
// 递归遍历子节点
if (node.children && node.children.length > 0) {
traverseAndCompare(node.children, keys);
}
}
}
// 示例数据
const treeData = [
{
key: 'A',
children: [
{
key: 'B',
children: [
{
key: 'C',
children: [],
},
{
key: 'D',
children: [],
},
],
},
{
key: 'E',
children: [],
},
],
},
{
key: 'F',
children: [
{
key: 'G',
children: [],
},
],
},
];
const keysToDelete = ['B', 'D', 'F']; // 需要删除的 key 列表
traverseAndCompare(treeData, keysToDelete);
console.log(treeData);
你需要遍历一个树形结构的数组对象,并与另一个数组进行对比。如果对象的 key 在另一个数组中存在,就删除该对象。下面是一个示例代码,可以帮助你完成这个任务:
这段代码会遍历 treeData
数组对象,并检查每个对象的 key 是否在 keysToDelete
数组中出现。如果 key 存在,则会将该对象从数组中删除。最后,你可以输出 treeData
查看结果。
请注意,这段代码假设树形结构的数组对象是通过嵌套的 key
和 children
属性组成的,你可以根据实际情况进行调整。另外,这段代码会直接修改原始的 treeData
数组,如果你需要保留原始数组,可以先进行深拷贝再操作。