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

本文介绍如何使用JavaScript操作树形结构,包括向树中动态添加节点以及查找指定节点的父节点。通过实例代码详细阐述了树结构的操作方法,有助于提升对JavaScript数据结构的理解和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  /**
   * 向树结构中添加数据
   *
   * @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.length === 0) {
                      value.children = []
                    }
                    let sum = value.children.push({
                      id: element.id,
                      children: []
                    })

                    pidCatalog.push(sum - 1)
                    catalog.set(element.id, pidCatalog)

                    isOk = true
                  } else {
                    let pidKV = []
                    if (typeof (catalog.get(ele.pid)) !== 'undefined') {
                      pidKV = JSON.parse(JSON.stringify(catalog.get(ele.pid)))
                    }
                    pu1.forT(value.children, element, pidKV)
                  }
                })
              }
            }

            let pidKV = []
            if (typeof (catalog.get(ele.pid)) !== 'undefined') {
              pidKV = JSON.parse(JSON.stringify(catalog.get(ele.pid)))
            }
            pu1.forT(treesData, ele, pidKV)
          }
        })
        return treesData
      }
    }
    // 默认父级id preview
    this.elements.treesData = pu.addTree(this.elements.treesData, elements, 'preview') // 组成树结构
    return isOk
  }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值