zoukankan      html  css  js  c++  java
  • 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
    }
    

      

  • 相关阅读:
    web渗透系列--信息收集
    机器学习之常用知识点
    机器学习之特征选择和特征抽取
    NLP之关键词提取(TF-IDF、Text-Rank)
    NLP之CRF应用篇(序列标注任务)
    NLP之概率图模型
    NLP之预训练
    NLP之词向量
    NLP之分词
    机器学习之常用损失函数和优化方法
  • 原文地址:https://www.cnblogs.com/vipzhou/p/5520186.html
Copyright © 2011-2022 走看看