一、递归删除树节点
演示:
代码:
deletedId(data, ids) {
for (var m = 0, n = data.length; m < n; m++) {
for (var i = 0, j = ids.length; i <j; i++) {
if (data[m] && data[m].id === ids[i]) {
data.splice(m, 1)
}
}
if (data[m] && data[m].children.length > 0) {
this.deletedId(data[m].children, ids)
}
}
return data
}
}
二、选中节点生成树
nodes: 左树数据
selectedKeys:选中节点id
/**
* 递归计算选中的节点
*/
walkTreeData(nodes, selectedKeys) {
const ret = []
nodes.forEach(node => {
const newNode = {...node}
delete newNode.children
node.children && (newNode.children = this.walkTreeData(node.children, selectedKeys))
if (selectedKeys.includes(newNode.id) || newNode.children && newNode.children.length) {
ret.push(newNode)
}
})
return ret
},