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==='    ')
呼び出しの結果を印刷
[湖北省]、「武漢市」、「漢陽区」、「水上支局」