主体函数

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))

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

最新文章

  1. Java集合框架知识总结
  2. percona-toolkit 之 【pt-deadlock-logger】说明
  3. 用jmap分析java程序
  4. 小试牛刀——python接口测试小框架
  5. CodeForces 546D Soldier and Number Game 打表(求质因子个数)
  6. 只有mdf 没有 日志 恢复数据库
  7. Django+xadmin打造在线教育平台(三)
  8. Bootstrap3 栅格系统-实例:手机、平板、桌面
  9. android 自定义权限管理
  10. Linux驱动学习1.hello world;
  11. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第5章编程练习3
  12. thinkphp5.0引入类
  13. Springboot整合Mybatis-puls
  14. 使用Oracle数据库时的org.springframework.jdbc.BadSqlGrammarException:
  15. 阿里云OSS 中文名称地址不对
  16. Python入门之软件开发目录规范
  17. ABP实战--分页排序
  18. Python import搜索的路径顺序
  19. SPSS学习系列之SPSS Statistics的菜单栏介绍(图文详解)
  20. 【CodeForces】626 F. Group Projects 动态规划

热门文章

  1. aha
  2. get_started_3dsctf_2016 1
  3. Sysenter/Kifastcallentry hook 检测与恢复
  4. Python语言的2个典型特性
  5. 云主机tracert外网无返回需在安全组入方向加ICMP Time Exceeded TTLexpired in transit
  6. myeclipse 安装spket
  7. JAVAWEB使用FreeMarker利用ftl把含有图片的word模板生成word文档,然后打包成压缩包进行下载
  8. vue的一些细节
  9. 【LeetCode】259. 3Sum Smaller 解题报告 (C++)
  10. 【LeetCode】266. Palindrome Permutation 解题报告(C++)