• js返回树形结构数据


    /**
     * 树形结构转换
     * @param a
     * @param idStr
     * @param pidStr
     * @param chindrenStr
     * @returns {Array}
     */
    function transData(a, idStr, pidStr, chindrenStr){
        let r = [], hash = {}, id = idStr, pid = pidStr, children = chindrenStr, i = 0, j = 0, len = a.length;
        for(; i < len; i++){
            hash[a[i][id]] = a[i];
        }
        for(; j < len; j++){
            let aVal = a[j], hashVP = hash[aVal[pid]];      //当前对象&pid对象
            if(hashVP){
                !hashVP[children] && (hashVP[children] = []);
                hashVP[children].push(aVal);
            }else{
                r.push(aVal);
            }
        }
        return r;
    }

     

    /**
     * 树形结构转换
     * @param a
     * @param idStr
     * @param pidStr
     * @returns {Array}
     */
    function transData2Tree(a, idStr, pidStr) {
      var r = []
      var hash = {}
      var len = a.length
      for (var i = 0; i < len; i++) {
        hash[a[i][idStr]] = a[i]
      }
      for (var j = 0; j < len; j++) {
        var aVal = a[j]
        var hashVP = hash[aVal[pidStr]]
        if (hashVP) {
          (!hashVP.children) && (hashVP.children = [])
          hashVP.children.push(aVal)
        } else {
          r.push(aVal)
        }
      }
      return r
    }
    
    /**
     * 返回一个节点下的所有子孙节点
     */
    function getChildren(arr, result, pid) {
      for (var i in result) {
        if (result[i].pid + '' === pid + '') {
          arr.push(result[i]._id + '')
          getChildren(arr, result, result[i]._id)
        }
      }
      return arr
    }
    

      

  • 相关阅读:
    Django —— DateTimeField格式
    Django——权限组件(中间件判断用户权限--URL初级)
    linux命令
    性能测试--测试分类
    web安全之csrf攻击
    web安全之xss攻击
    测试用例规范
    禅道操作手册
    fiddler弱网测试
    Web测试系列之测试工具
  • 原文地址:https://www.cnblogs.com/vipzhou/p/5520186.html
Copyright © 2020-2023  润新知