翼度科技»论坛 编程开发 JavaScript 查看内容

js 树形结构根据id获取父级节点元素

11

主题

11

帖子

33

积分

新手上路

Rank: 1

积分
33
封装函数
  1. // 传入 id、树形结构数据
  2. export function getParentTree(id, tree) {
  3.   let arr = [] //要返回的数组
  4.   for (let i = 0; i < tree.length; i++) {
  5.     let item = tree[i]
  6.     arr = []
  7.     arr.push(item) //保存当前节点id
  8.     if (id== item.id) {
  9.       //判断当前id是否是默认id
  10.       return arr //是则退出循环、返回数据
  11.     } else {
  12.       //否则进入下面判断,判断当前节点是否有子节点数据
  13.       if (item.children && item.children.length > 0) {
  14.         //合并子节点返回的数据
  15.         arr = arr.concat(getParentTree(id, item.children ? item.children : []))
  16.         console.log(arr)
  17.         if (arr.map(item2 => (item2 ? item2.id : '')).includes(id)) {
  18.           //如果当前数据中已包含默认节点,则退出循环、返回数据
  19.           return arr
  20.         }
  21.       }
  22.     }
  23.   }
复制代码
调用函数
  1. const treeData = [{
  2.   name: '1',
  3.   id: 1,
  4.   children: [{
  5.     name: '1-1',
  6.     id: 2,
  7.     children: [{
  8.       name: '1-1-1',
  9.       id: 4,
  10.     }],
  11.     name: '1-2',
  12.     id: 3,
  13.     children: [{
  14.       name: '1-2-1',
  15.       id: 5,
  16.     }],
  17.   }]
  18. },{
  19.   name: '2',
  20.   id: 6,
  21.   children: [{
  22.     name: '2-1',
  23.     id: 7,
  24.     children: [{
  25.       name: '2-1-1',
  26.       id: 9,
  27.     }],
  28.     name: '2-2',
  29.     id: 8,
  30.     children: [{
  31.       name: '2-2-1',
  32.       id: 10,
  33.     }],
  34.   }]
  35. }]
  36. console.log(getParentTree(5, treeData))
复制代码
来源:https://www.cnblogs.com/zhanlibiao/p/17388752.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具