要素IDに基づいてツリー構造を巡回し、すべての親要素IDを検索します.

1331 ワード

iveiw Cascade rカスケード選択コンポーネント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

不足点やより良い方法があれば、指摘を歓迎します.