扁平化数据转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;
        }

你可能感兴趣的:(扁平化数据转Tree树结构数据)