工程实践
【magic-api】树形结构递归计算各个节点子节点数值之和
· 三面体
import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeUtil; /** * 基于内存递归计算,避免多次查库导致运行缓慢 */ var groupList = [ {"id": 1, "parentId":
magic-api
import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil;
/**
* 基于内存递归计算,避免多次查库导致运行缓慢
*/
var groupList = [
{"id": 1, "parentId":-1, "num":1},
{"id": 2, "parentId":1,"num":1},
{"id": 3, "parentId":2,"num":1},
]
var getChildNum = (obj)=>{
var childList = []
for (item in groupList) {
if (item.parentId == obj.id){
childList.add(item);
}
}
obj.totalNum = obj.num;
if (childList != null && childList.size() > 0){
for (item in childList) {
getChildNum(item);
obj.totalNum = obj.totalNum + item.totalNum;
}
}else{
return obj;
}
}
for (item in groupList) {
getChildNum(item);
}
// 不需要转变为树形结构可以直接返回
// return groupList;
//转变为树形结构
var config = new TreeNodeConfig();
config.setIdKey("id");
config.setParentIdKey("parentId");
var treeObj = TreeUtil.build(groupList, -1, config, ((object, treeNode) -> {
treeNode.setId(object.get("id"));
treeNode.setParentId(object.get("parentId"));
treeNode.putExtra("num", object.get("num"));
treeNode.putExtra("totalNum", object.get("totalNum"));
}));
return treeObj