js 通过id递归拿到树形数据的父节点

childNodes: 子节点 parentNode:当前节点

{  
 "childNodes":[  
        {  
            "childNodes":[  
                null  
            ],  
            "parentNode":{  
                "key":1,  
                "value":"string"  
            }  
        }  
    ],  
 "parentNode":{  
        "key":0,  
        "value":"string"  
    }  
}

通过当前节点的key 怎么递归取到它的父节点

阅读 5.2k
2 个回答
 const findPnodeId = function(data, key) {
        // 设置结果
        let result
        if (!data) {
          return// 如果data传空,直接返回
        }
        for (var i = 0; i < data.childNodes.length; i++) {
          const item = data.childNodes[i]
          if (item.parentNode.key === key) {
            result = data.parentNode.key
            // 找到id相等的则返回父id
            return result
          } else if (item.childNodes && item.childNodes.length > 0) {
            // 如果有子集,则把子集作为参数重新执行本方法
            result = findPnodeId(item, key)
            // 关键,千万不要直接return本方法,不然即使没有返回值也会将返回return,导致最外层循环中断,直接返回undefined,要有返回值才return才对
            if (result) {
              return result
            }
          }
        }
        // 如果执行循环中都没有return,则在此return
        return result
      }
      const prnindt = findPnodeId(this.predIds, key)

没太看懂给的数据结构

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题