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};
}
posted on 2019-06-19 00:59  yoyo002  阅读(198)  评论(0编辑  收藏  举报