递归数据格式转换
现有这么一种格式的数据如下:
[{
"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;
}
如果有不当的地方请留言通知我,谢谢!