jsツリー構造データは、あるサブノードが、すべての親ノードを一度に上に取得することを知っています.
9421 ワード
木の形の構造のresをすでに知っています.現在のオブジェクトは{code:1、name:「水上支局」です.上の方に順番に取得したいです.例えば、水上支局の父のノードは漢陽区漢陽区の父のノードです.武漢市武漢市の父のノードは湖北省で最後に漢陽区を武漢市湖北省にします.
[湖北省]、「武漢市」、「漢陽区」、「水上支局」
var res = [{
code: 1,
name: " ",
children: [{
code: 1,
name: " ",
children: [{
code: 1,
name: " ",
children: [{
code: 1,
name: " 1"
}]
}, {
code: 1,
name: " ",
children: [{
code: 1,
name: " 2"
}]
}, {
code: 1,
name: " ",
children: [{
code: 1,
name: " 3"
}]
}]
}, {
code: 1,
name: " ",
children: [{
code: 1,
name: " ",
children: [{
code: 1,
name: " "
}]
}, {
code: 1,
name: " ",
children: [{
code: 1,
name: " "
}]
}]
}]
}]
方法function treeFindPath (tree, func, path = []) {
if (!tree) return []
for (const data of tree) {
//
path.push(data.name)
if (func(data)) return path
if (data.children) {
const findChildren = treeFindPath(data.children, func, path)
if (findChildren.length) return findChildren
}
path.pop()
}
return []
}
呼び出しtreeFindPath(res, data=> data.name===' ')
呼び出しの結果を印刷[湖北省]、「武漢市」、「漢陽区」、「水上支局」