1、递归
递归找到树形数据中匹配的某条数据
// 递归找到选中的id
const keyArr: any[] = []
const getAssignedTask = (data: any[], id?: string) => {
data.forEach(item => {
if (item.children) {
if (item.executorId === id) {
keyArr.push(item.id)
}
getAssignedTask(item.children, id)
} else {
if (item.executorId === id) {
keyArr.push(item.id)
}
}
})
return keyArr
}
2.铺平树形结构数据
// 铺平数结构
const list: any[] = []
const flatTreeAndSetLevel = (tree: any[], type = 'children') => {
if (tree.length == 0) {
return []
}
tree.forEach((item: any) => {
const copyData = JSON.parse(JSON.stringify(item))
delete copyData[type]
list.push(copyData)
if (item.children && item.children.length > 0) {
flatTreeAndSetLevel(item[type])
}
})
return list
}
3.数据铺平后找到所有父级
// 找到所有父级节点
const getParentAreas = (pid: string, data: any[]) => {
if (!pid) {
return []
}
const target: any[] = []
const o = data.find(item => item.id == pid) || {}
if (JSON.stringify(o) != '{}' && o.parentId) target.push(o.parentId)
if (o.parentId) target.push(...getParentAreas(o.parentId, data))
return target
}