功能描述
通用的从特定的treeData中根据特定字段的值 找出所有的父级特定字段
比如从treeData中找出id=5的所有父级的id
参数说明
origin:在那个数据里查找
value:要查找的值是什么
fieldName:要查找的值是什么字段
needFieldName:需要返回的是什么字段,默认取fieldName
childrenName:children字段名称
补充
特定字段是在整个treeData中唯一的,比如key,id等
代码
interface TreeDataFindParentParams {
origin: any[]
value: string | number
fieldName?: string
needFieldName?: string
childrenName?: string
}
function TreeDataFindParent({
origin = [],
fieldName = 'id',
childrenName = 'children',
value = '',
needFieldName = fieldName,
}: TreeDataFindParentParams) {
let temp: any[] = []
function loop(arr: any[], value: string | number) {
arr.forEach((x: any) => {
if (Array.isArray(x[childrenName]) && x[childrenName].length) {
if (x[childrenName].map((y: any) => y[fieldName]).includes(value)) {
temp.push(x[needFieldName])
loop(origin, x[fieldName])
} else {
loop(x[childrenName], value)
}
}
})
}
loop(origin, value)
return temp
}
export default TreeDataFindParent
使用方法
