
我爱模板网在工作中遇到了通过后端返回的ID,在js的多维数组中通过这个ID,反向查找所有的父级id,并将结果放在一个数组中:
假设有这么个数组:
var menu = [ //数组树型结构
{
childList:[],
id:'11111'
},
{
childList:[
{
childList:'',
id:'22221'
},
{
childList:[
{
childList:'',
id:'33332'
}
],
id:'22222'
}
],
id:'11112'
},
{
childList:[
{
childList:[
{
childList:[],
id:'33333'
}
],
id:'22223'
}
],
id:'11113'
},
{
childList:[
{
childList:[
{
childList:[
{
childList:[],
id:'44444'
}
],
id:'33334'
}
],
id:'22224'
}
],
id:'11114'
},
]假设最终查找的id数组为:
const openedKeys = []
假设后端返回的id为:
const lastOpenkey = '44444'
逆向递归查找方法:
function formTree(list, id) {
list.forEach(item => {
// 判断是否有children子集
if (item.children && item.children.length) {
// 判断子集里是否有想要的值来进行是否需要继续递归还是从头递归
if (item.children.some(row => row.id === id)) {
// 接收符合的数据id
openedKeys.push(item.id)
// 从头递归,找父级id
formTree(menu, item.id)
} else {
// 没有找到,继续递归
formTree(item.children, id)
}
} else return
})
}调用:
formTree(menu, lastOpenkey)
