zoukankan      html  css  js  c++  java
  • 数据处理为树形结构以及多级菜单的逻辑分析

    function treeData(data){   
            let cloneData = JSON.parse(JSON.stringify(data))
            return cloneData.filter(father=>{
                let branchArr = cloneData.filter(child => father['id'] == child['pid']);
                branchArr.length>0 ? father['children'] = branchArr : '';
                return father['pid'] == 0 ;
            })
        }
    function toTree(data) {
            let result = []
            if (!Array.isArray(data)) {
                return result
            }
            data.forEach(item => {
                delete item.children;
            });
            let map = {};
            data.forEach(item => {
                item.expand = false;
                map[item.id] = item;
            });
            data.forEach(item => {
                let parent = map[item.pid];
                if (parent) {
                    (parent.children || (parent.children = [])).push(item);
                } else {
                    result.push(item);
                }
            });
            return result;
        }

    //数据源组装成树形结构(一级与后面的级逻辑不同)
    逻辑:开始遍历所有数据,根据一级关系找出一级,调用二级方法;将2级方法抽离出来,在2级方法中遍历所有数据,并根据一级与2级的关系找出2级
    function first(data,arr,0){
    for(var i =0;i<data.length;i++){
    if(data[i].pid == 0){
    arr.push(data[i]);
    two(data,data[i].id);
    }
    }
    }
    function two (data,pid){
    var arr = [];
    for(var i = 0;i<data[i].length;i++){
    if(data[i].pid == pid){
    arr.push(data[i])
    }
    }
    return arr;
    }

  • 相关阅读:
    数据结构之双向链表的插入
    循环链表之约瑟夫 环
    循环链表
    顺序表的A-A交B
    环境变量
    java之构造函数的简单应用
    java之覆盖
    数据结构之栈的进制转换(10进制-- > 8进制 )
    数据结构链表之 一元多次多项式
    排序之简单的快速排序
  • 原文地址:https://www.cnblogs.com/tutao1995/p/9777204.html
Copyright © 2011-2022 走看看