扁平化数据转Tree树结构数据

下面采用的方式比较 递归 来讲,时间要快很多,递归也是同样可以实现这类效果

 function createThree(list) {
            var map = {}, // 创建一个用ID作Key的对象
                listData = [], // 创建一个空数组,用来接收传入的数组
                paraArray = []; // 返回的数组
            // 循环遍历出map对象和数组格式
            list.forEach((item) => {
                // 给map,listData赋值
                map[item.id] = item;
                listData.push(item);
            });
            // 循环数组
            listData.forEach((item) => {
                // 根据父级的ID,找到对应的对象
                var even = map[item.parentId];
                // 判断对象是否存在,存在的话,进行深层次的判断
                if (even) {
                    // 判断父级是否存在子级,存在进行传值
                    if (even.children) {
                        even.children.push(item);
                    } else {
                        // 不存在,创建子级,进行传值
                        even.children = [];
                        even.children.push(item);
                    }
                } else {
                    // 对象不存在,做为初始的值,传入空数组
                    paraArray.push(item);
                }
            });
            return paraArray;
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容