1
当前正在使用lodash进行具有扁平数据结构的树。但手动传递属性来生成组。我想树生成函数有两个参数通过lodash进行动态分组
function makeTree(data,properties){}
当前数据结构分离
var data = [
{"taskID": 1,"taskTitle": "Project Meeting","tagID": 23,"tagName": "IT Project V4","tagTypeID": 2,"tagType": "Project"},
{"taskID": 1,"taskTitle": "Project Meeting","tagID": 5,"tagName": "Customer 1","tagTypeID": 1,"tagType": "Customer"},
{"taskID": 1,"taskTitle": "Project Meeting","tagID": 19,"tagName": "Project 3","tagTypeID": 2,"tagType": "Project"},
{"taskID": 1,"taskTitle": "Project Meeting","tagID": 14,"tagName": "Internal Dev","tagTypeID": 3,"tagType": "Development"},
{"taskID": 1,"taskTitle": "Project Meeting","tagID": 4,"tagName": "Customer 2","tagTypeID": 1,"tagType": "Customer"},
{"taskID": 2,"taskTitle": "Weekly Team Meeting","tagID": 10,"tagName": "IT Project","tagTypeID": 2,"tagType": "Project"},
{"taskID": 2,"taskTitle": "Weekly Team Meeting","tagID": 11,"tagName": "Project 2","tagTypeID": 2,"tagType": "Project"},
{"taskID": 2,"taskTitle": "Weekly Team Meeting","tagID": 14,"tagName": "Internal Dev","tagTypeID": 3,"tagType": "Development"},
{"taskID": 2,"taskTitle": "Weekly Team Meeting","tagID": 23,"tagName": "IT Project V4","tagTypeID": 2,"tagType": "Project"},
{"taskID": 3,"taskTitle": "Release Planing","tagID": 10,"tagName": "IT Project","tagTypeID": 2,"tagType": "Project"},
{"taskID": 3,"taskTitle": "Release Planing","tagID": 7,"tagName": "Inpex","tagTypeID": 1,"tagType": "Customer"},
{"taskID": 3,"taskTitle": "Release Planing","tagID": 2,"tagName": "Agrium","tagTypeID": 1,"tagType": "Customer"},
{"taskID": 3,"taskTitle": "Release Planing","tagID": 3,"tagName": "Sain Gobain","tagTypeID": 1,"tagType": "Customer"},
{"taskID": 3,"taskTitle": "Release Planing","tagID": 4,"tagName": "Customer 2","tagTypeID": 1,"tagType": "Customer"},
{"taskID": 3,"taskTitle": "Release Planing","tagID": 5,"tagName": "Customer 1","tagTypeID": 1,"tagType": "Customer"}
];
var output= _(data).groupBy('tagType').map(function (value, key) {
return {
value: key,
children : _(value).groupBy('tagName').map(function(val,key){
\t \t \t \t return { value : key, children : _(val).groupBy('taskTitle').map(function(v,k){ return { value : v,children:[]}}).value() }
\t \t \t }).value()
}
}).value();
console.log(output);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>