js 实现 list转换成tree;tree转换成list

1、list转换成tree;

	//oldArr参数是list集合;parentnodes 这个是父节点的id;
	listToTree(oldArr){
    
    
      if(oldArr.length > 0){
    
    
        oldArr.forEach(element => {
    
    
          let parentnodes = element.parentnodes;
          if(parentnodes !== '0'){
    
    
            oldArr.forEach(ele => {
    
    
              if(ele.id == parentnodes){
    
     //当内层循环的ID== 外层循环的parendId时,(说明有				children),需要往该内层id里建个children并push对应的数组;
                if(!ele.ChildNodes){
    
    
                  ele.ChildNodes = [];
                }
                ele.ChildNodes.push(element);
              }
            });
          }
        });
        oldArr = oldArr.filter(ele => ele.parentnodes == '0'); //这一步是过滤,按树展开,将多余的数组剔除;
      }
      return oldArr;
    },

2、tree转换成list;

	//treeList  为树形结构的数据;子集存在ChildNodes
	treeListToList(treeList) {
    
    
      // 将树结构的列表转换为普通列表
      let list = [];
      this.handleTreeList(treeList, list);
      return list;
    };
    //处理树结构
    handleTreeList(treeList, list) {
    
    
      if (!treeList || !treeList.length) {
    
    
        return;
      }
      for (let i = 0; i < treeList.length; i++) {
    
    
        let currentRow = treeList[i];
        let newRow = JSON.parse(JSON.stringify(currentRow));
        newRow.ChildNodes = undefined;
        list.push(newRow);
        this.handleTreeList(currentRow.ChildNodes, list);
      }
    },

猜你喜欢

转载自blog.csdn.net/qqjuanqq/article/details/127392417