js 实现向树结构添加节点 并 从树结构中获取节点的父级

  /**
   * 向树结构中添加数据
   *
   * @param object elements 元素信息
   * ps: elements 是元素的element类整个对象
   *
   * @returns bool
   */
  setChildren (elements) {
    let isOk = false
    let catalog = this.elements.treesKV
    var pu = {
      addTree: function (treesData, elements, pid = 'preview') {
        elements.forEach((ele, eleid) => {
          if (ele.pid === pid) {
            let sum = treesData.push({
              id: eleid,
  
              children: []
            })
            // ele.vm.$data.attr['floorCoord'] = sum - 1 // 记录楼层位置下标
            catalog.set(eleid, [sum - 1])
            isOk = true
          } else {
            var pu1 = {
              forT: function (treesData, element, pidCatalog) {
                treesData.forEach((value, index) => {
                  if (value.id === element.pid) {
                    if (value.children.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设树形结构数据如下: ```javascript var treeData = [ { id: 1, text: 'Node 1', children: [ { id: 2, text: 'Node 1.1', children: [ { id: 3, text: 'Node 1.1.1' } ] }, { id: 4, text: 'Node 1.2' } ] }, { id: 5, text: 'Node 2', children: [ { id: 6, text: 'Node 2.1', children: [ { id: 7, text: 'Node 2.1.1' }, { id: 8, text: 'Node 2.1.2' } ] } ] } ]; ``` 如果要获取某个节点父级 ID,可以通过递归遍历树形结构实现,示例代码如下: ```javascript function getParentId(treeData, nodeId) { for (var i = 0; i < treeData.length; i++) { var node = treeData[i]; if (node.id === nodeId) { return null; // 根节点没有父级 } if (node.children && node.children.length > 0) { for (var j = 0; j < node.children.length; j++) { var childNode = node.children[j]; if (childNode.id === nodeId) { return node.id; // 返回父级 ID } else if (childNode.children && childNode.children.length > 0) { var parentId = getParentId(childNode.children, nodeId); if (parentId !== null) { return parentId; } } } } } return null; // 没有找到节点 } // 示例:获取 id 为 3 的节点父级 ID var parentId = getParentId(treeData, 3); console.log(parentId); // 2 ``` 上述代码,`getParentId` 函数接收两个参数:树形结构数据和要查找的节点 ID。函数首先遍历树形结构数据,找到对应的节点,如果该节点是根节点,则返回 `null`;如果该节点是子节点,则返回其父级节点的 ID。如果该节点既不是根节点也不是子节点,则递归遍历该节点的子节点,直到找到对应的节点或遍历完整个树形结构。如果没有找到对应的节点,则返回 `null`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值