Node下组装树形结构的数据
直接上代码
/**
* @author JUE
* @comments 合并树形数据(合并后的数据放在childList中)
* @time
* @modification
* @param data 需要转换为树形的数据
* @param formatData 树形结构 [[一级字段...],[二级字段...]...] 根据每级字段首字段合并数据首字段一般设置主键
* @param level 当前级别(调用时不需要传)
*/
const getJsonTree = (data, formatData, level = formatData.length - 2) => {
if (formatData.length < 2)
return data;
let resultList = [];
let list = [];
for (let i = 0; i < data.length; i++) {
let child = {};
formatData[level + 1].map(value => {
child[value] = data[i][value];
});
child.childList = data[i].childList;
list.push(child);
if (!data[i + 1] || data[i][formatData[level][0]] != data[i + 1][formatData[level][0]]) {
let map = {};
for (let j = 0; j <= level; j++) {
formatData[j].map(value => {
map[value] = data[i][value];
});
}
map.childList = list;
resultList.push(map);
list = [];
}
}
//判断是否有上一级
if (level > 0) {
resultList = getJsonTree(resultList, formatData, level - 1);
}
return resultList;
};
用法
//result原始数据
const treeList = getJsonTree(result, [["id1","name1"...],["id2","name2","value2"]...]);