根据元素ID遍历树形结构,查找到所有父元素ID。

本文介绍如何在级联选择组件中,根据单一元素ID遍历树形结构,查找并收集所有父元素ID,通过递归算法实现,适用于前后端数据同步场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iveiw Cascader 级联选择 组件 v-model的数据是一个数组类型,工作中如果需要回显的话,就需要传递所有父级元素的ID所组成的数组,但是后台只存放了目标元素的ID,所以只能自己去遍历数据获取了。
综上所述,需求确定了,就是:根据元素ID遍历树形结构,查找到所有父元素ID。
####下面是数据结构:


[{
    "orgId": 1,
    "orgName": "校长办公室1",
    "parentId": 0,
    "children": [{
        "orgId": 2,
        "orgName": "校长办公室2",
        "parentId": 1,
        "children": [{
            "orgId": 3,
            "orgName": "校长办公室3",
            "parentId": 2,
        }]
    }]
}]

个人思路是,用递归查找到ID的所属元素,然后把每一级的parentId一起返回。

####实现方法:


 function buildParentList(arr){
	arr.forEach(g =>
	 {
		if(g.parentId != undefined) {
			let pid = g['parentId']
           	let oid = g['orgId']
            parentList[oid] = pid	
		}
		if (g.children != undefined)
            buildParentList(g['children'])
	})
}
function findParent(idx){
    if (parentList[idx] != undefined){
        let pid = parentList[idx]
        console.log(pid)
        findParent(pid)
	}
}

####执行方法:


buildParentList(list)
findParent(3); // 0 1 2
findParent(2); // 0 1
findParent(4); // undefined

如有不足之处或者更好的方法欢迎指出!

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值