zoukankan      html  css  js  c++  java
  • JS获取树的父节点及祖先节点

    主体函数

    export function findAllParent (node, tree, parentNodes = [], index = 0) {
      if (!node || node.fid === 0) {
        return
      }
      findParent(node, parentNodes, tree)
      let parentNode = parentNodes[index]
      findAllParent(parentNode, tree, parentNodes, ++index)
      return parentNodes
    }
    
    function findParent (node, parentNodes, tree) {
      for (let i = 0; i < tree.length; i++) {
        let item = tree[i]
        if (item.id === node.fid) {
          parentNodes.push(item)
          return
        }
        if (item.children && item.children.length > 0) {
          findParent(node, parentNodes, item.children)
        }
      }
    }
    
    export default findAllParent

    调用方式

    import findParentNodes from './test'
    let menuTreeData = [
      {
        id: 1,
        fid: 0,
        name: '1',
        children: [
              {
                id: 11,
                fid: 1,
                name: '1-1',
                children: [
                  { id: 111, fid: 11, name: '1-1-1' },
                  { id: 112, fid: 11, name: '1-1-2' }
                ]
              },
          { id: 12, fid: 1, name: '1-2' }
        ]
      },
      { id: 2, fid: 0, name: '2' }
    ]
    let nodes = []
    let parentNodes = findParentNodes({ id: 112, fid: 11 }, menuTreeData, nodes)
    console.error('tag', nodes.map(item => item.name))
    console.error('tag', parentNodes.map(item => item.name))

    两种方式都可以获取到祖先节点的值

  • 相关阅读:
    POJ 2773 Happy 2006------欧几里得 or 欧拉函数。
    Candies
    subway(dijkstra以最短时间代替最短路)
    昂贵的聘礼
    LightOJ 1074
    SPFA以及各种优化
    Making Huge Palindromes (Manacher)
    Making Huge Palindromes (KMP处理回文串)
    AC自动机基础
    扩展KMP
  • 原文地址:https://www.cnblogs.com/ToBeBest/p/10169264.html
Copyright © 2011-2022 走看看