递归数据格式转换

来源:互联网 发布:风冷知乎 编辑:程序博客网 时间:2024/06/05 09:10

递归数据格式转换

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

    [{    "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;    }

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

原创粉丝点击