递归数据格式转换

递归数据格式转换

现有这么一种格式的数据如下:

    [{
    "id": 1,
    "name": "baidvbusbdviyw",
    "parentId": 0,
    "memo": "",
    "parentsFeature": ",",
    "empId": 3,
    "createTime": 1503628821000,
    "updateTime": 1503628821000
}, {
    "id": 10,
    "name": "啦",
    "parentId": 0,
    "memo": "",
    "parentsFeature": ",",
    "empId": 3,
    "createTime": 1503889222000,
    "updateTime": 1503889222000
}, {
    "id": 19,
    "name": "123123",
    "parentId": 0,
    "memo": "",
    "parentsFeature": ",",
    "empId": 3,
    "createTime": 1503905894000,
    "updateTime": 1503905894000
}, {
    "id": 20,
    "name": "edwsxd",
    "parentId": 19,
    "memo": "",
    "parentsFeature": ",19,",
    "empId": 3,
    "createTime": 1503905923000,
    "updateTime": 1503905923000
}, {
    "id": 21,
    "name": "cdacevdvcdsc",
    "parentId": 20,
    "memo": "",
    "parentsFeature": ",19,20,",
    "empId": 3,
    "createTime": 1503905953000,
    "updateTime": 1503905953000
}, {
    "id": 23,
    "name": "啦的儿子",
    "parentId": 10,
    "memo": "",
    "parentsFeature": ",10,",
    "empId": 3,
    "createTime": 1503907240000,
    "updateTime": 1503907240000
}, {
    "id": 24,
    "name": "陈蛐蛐赌场全额v",
    "parentId": 0,
    "memo": "",
    "parentsFeature": ",",
    "empId": 3,
    "createTime": 1503907568000,
    "updateTime": 1503907568000
}, {
    "id": 25,
    "name": "qecvq",
    "parentId": 24,
    "memo": "",
    "parentsFeature": ",24,",
    "empId": 3,
    "createTime": 1503907577000,
    "updateTime": 1503907577000
}, {
    "id": 26,
    "name": "4个4个 ",
    "parentId": 24,
    "memo": "",
    "parentsFeature": ",24,",
    "empId": 3,
    "createTime": 1503911753000,
    "updateTime": 1503911753000
}, {
    "id": 27,
    "name": "啦的孙子",
    "parentId": 23,
    "memo": "",
    "parentsFeature": ",10,23,",
    "empId": 3,
    "createTime": 1503915740000,
    "updateTime": 1503915740000
}, {
    "id": 28,
    "name": "啦的二儿子",
    "parentId": 10,
    "memo": "",
    "parentsFeature": ",10,",
    "empId": 3,
    "createTime": 1503915761000,
    "updateTime": 1503915761000
}, {
    "id": 29,
    "name": "啦的曾孙子",
    "parentId": 27,
    "memo": null,
    "parentsFeature": ",10,23,27,",
    "empId": 3,
    "createTime": 1503915781000,
    "updateTime": 1503972701000
}, {
    "id": 31,
    "name": "确认v请问v",
    "parentId": 30,
    "memo": "",
    "parentsFeature": ",30,",
    "empId": 3,
    "createTime": 1503974430000,
    "updateTime": 1503974430000
}, {"id": "asdvasdva", "name": "啦啦啦啦", "parentId": 0}, {
    "id": "vasdvwrvwdqvw",
    "name": "啦啦啦陈摩的常年卧",
    "parentId": "asdvasdva"
}];

想将其转化成为这样的

    [
    {
        "name": "baidvbusbdviyw",
        "children": []
    },
    {
        "name": "啦",
        "children": [
            {
                "name": "啦的儿子",
                "children": [
                    {
                        "name": "啦的孙子",
                        "children": [
                            {
                                "name": "啦的曾孙子",
                                "children": []
                            }
                        ]
                    }
                ]
            },
            {
                "name": "啦的二儿子",
                "children": []
            }
        ]
    },
    {
        "name": "123123",
        "children": [
            {
                "name": "edwsxd",
                "children": [
                    {
                        "name": "cdacevdvcdsc",
                        "children": []
                    }
                ]
            }
        ]
    },
    {
        "name": "陈蛐蛐赌场全额v",
        "children": [
            {
                "name": "qecvq",
                "children": []
            },
            {
                "name": "4个4个 ",
                "children": []
            }
        ]
    },
    {
        "name": "啦啦啦啦",
        "children": [
            {
                "name": "啦啦啦陈摩的常年卧",
                "children": []
            }
        ]
    }
]

code

    var folderTree = new FolderTree();
    console.log(JSON.stringify(folderTree.buildGroup()));
    function FolderTree() {
        this.folderData = [];
        this.localFolderList = getData();
        this.testChildFolder = function(id, localFolderList){
            var folderArr = [];
            for (var i = 0; i < localFolderList.length; i++) {
                if (id == localFolderList[i].parentId) {
                    folderArr.push(localFolderList[i]);
                }
            }
            return folderArr;
        };
        this.getFolderName = function(folderId){
            var folderName = "";
            var folderNameArr = [];
            var localFolderList = this.localFolderList;
            localFolderList.map(function (item) {
                folderNameArr.push(item.name);
                if (folderId == item.id) {
                    folderName = item.name;
                }
            });
            if (folderId || folderId == "0") {
                if (folderName != "") {
                    return folderName;
                } else {
                    return "(无)";
                }
            } else {
                return folderNameArr;
            }
        };
        this.fndChildFolder = function (folder, $thisChildren) {
            var $thisChildren = $thisChildren || [];
            var childrenList = this.testChildFolder(folder.id, this.localFolderList);
            var parentName = this.getFolderName(folder.parentId);
            if (folder.parentId == 0) {
                if (childrenList.length > 0) {
                    var data = {
                        "name": folder.name,
                        "children": []
                    };
                    this.folderData.push(data);
                    for (var i = 0; i < childrenList.length; i++) {
                        this.fndChildFolder(childrenList[i], this.folderData);
                    }
                } else {
                    var data = {
                        "name": folder.name,
                        "children": []
                    };
                    this.folderData.push(data);
                }
            } else {
                if (childrenList.length > 0) {
                    var data = {
                        "name": folder.name,
                        "children": []
                    };
                    var thisChildren = [];
                    for (var i = 0; i < $thisChildren.length; i++) {
                        if (parentName == $thisChildren[i].name) {
                            $thisChildren[i].children.push(data);
                            thisChildren = $thisChildren[i].children;
                        }
                    }
                    for (var i = 0; i < childrenList.length; i++) {
                        this.fndChildFolder(childrenList[i], thisChildren);
                    }
                } else {
                    var data = {
                        "name": folder.name,
                        "children": []
                    };
                    var thisChildren = [];
                    for (var i = 0; i < $thisChildren.length; i++) {
                        if (parentName == $thisChildren[i].name) {
                            $thisChildren[i].children.push(data);
                            thisChildren = $thisChildren[i].children;
                        }
                    }
                }
            }
            return this.folderData;
        };
        this.buildGroup = function () {
            for (var i = 0; i < this.localFolderList.length; i++) {
                this.fndChildFolder(this.localFolderList[i]);
            }
            return this.folderData;
        }
    }
    function getData(){
        var data = [{"id":1,"name":"baidvbusbdviyw","parentId":0,"memo":"","parentsFeature":",","empId":3,"createTime":1503628821000,"updateTime":1503628821000},{"id":10,"name":"啦","parentId":0,"memo":"","parentsFeature":",","empId":3,"createTime":1503889222000,"updateTime":1503889222000},{"id":19,"name":"123123","parentId":0,"memo":"","parentsFeature":",","empId":3,"createTime":1503905894000,"updateTime":1503905894000},{"id":20,"name":"edwsxd","parentId":19,"memo":"","parentsFeature":",19,","empId":3,"createTime":1503905923000,"updateTime":1503905923000},{"id":21,"name":"cdacevdvcdsc","parentId":20,"memo":"","parentsFeature":",19,20,","empId":3,"createTime":1503905953000,"updateTime":1503905953000},{"id":23,"name":"啦的儿子","parentId":10,"memo":"","parentsFeature":",10,","empId":3,"createTime":1503907240000,"updateTime":1503907240000},{"id":24,"name":"陈蛐蛐赌场全额v","parentId":0,"memo":"","parentsFeature":",","empId":3,"createTime":1503907568000,"updateTime":1503907568000},{"id":25,"name":"qecvq","parentId":24,"memo":"","parentsFeature":",24,","empId":3,"createTime":1503907577000,"updateTime":1503907577000},{"id":26,"name":"4个4个 ","parentId":24,"memo":"","parentsFeature":",24,","empId":3,"createTime":1503911753000,"updateTime":1503911753000},{"id":27,"name":"啦的孙子","parentId":23,"memo":"","parentsFeature":",10,23,","empId":3,"createTime":1503915740000,"updateTime":1503915740000},{"id":28,"name":"啦的二儿子","parentId":10,"memo":"","parentsFeature":",10,","empId":3,"createTime":1503915761000,"updateTime":1503915761000},{"id":29,"name":"啦的曾孙子","parentId":27,"memo":null,"parentsFeature":",10,23,27,","empId":3,"createTime":1503915781000,"updateTime":1503972701000},{"id":31,"name":"确认v请问v","parentId":30,"memo":"","parentsFeature":",30,","empId":3,"createTime":1503974430000,"updateTime":1503974430000},{"id":"asdvasdva","name":"啦啦啦啦","parentId":0},{"id":"vasdvwrvwdqvw","name":"啦啦啦陈摩的常年卧","parentId":"asdvasdva"}];
        return data;
    }

如果有不当的地方请留言通知我,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值