groupby

listToTreeByGroup(list, groupBy, level, aggregates){
let nodeList = [];
let nodeMapping = {};
list.forEach(v=>{
let id = v[groupBy[level]];
if(!nodeMapping[id]){
let node = { id, pid:level>0?groupBy[level-1]:null,data:[],level };
nodeMapping[id] = node;
nodeList.push(node);
}
nodeMapping[id].data.push(v);
})

nodeList.forEach(node=>{
let ch = this.listToTreeByGroup(node.data,groupBy,level+1,aggregates);
node.children = ch.nodeList;
Object.assign(nodeMapping, ch.nodeMapping);
})
return {nodeList,nodeMapping};
}
原文地址:https://www.cnblogs.com/yoyogis/p/11048906.html