根据id:1-1-1,查找它父级的id:1
可以用于接口传数据(同时传子级和复级),得到了子级ID,查找父级ID。
进行数据的处理
//数据源
const data = [
{
id:"1",
name:"A",
children:[
{
id:"1-1",
name:"A-A",
children:[
{
id:"1-1-1",
name:"A-A-A",
}
]
},
{
id:"1-2",
name:"A-B",
},
]
},
{
id:"2",
name:"B",
children:[]
}
]
const findPatent = (array, value, valueName = 'id', childrenName = 'children') => {
if (!value || !Array.isArray(array)) return []
const result = []
let valid = false
const seek = (array, value) => {
let parentValue = ''
let parentName = ''
const up = (array, value, lastValue,lastName) => {
array.forEach(v => {
const val = v[valueName]
const name = v['assetsTypeName']
const child = v[childrenName]
if (val === value) {
valid = true
parentValue = lastValue
parentName = lastName
return
}
if (child && child.length) up(child, value, val,name)
})
}
up(array, value)
if (parentValue) {
result.unshift(parentValue,parentName)
seek(array, parentValue)
}
}
seek(array, value)
return valid ? [...result, value] : []
}
findPatent(data,id)