JavaScript 递归实现数据格式转换 - 将扁平化数据转化为树形结构
function formatData(data) { const result = []; const companyMap = new Map(); const projectMap = new Map();
for (const item of data) { const { companyName, comanyNo, projectName, projectNo, siteName, siteNo, total } = item;
let company = companyMap.get(companyName);
if (!company) {
company = {
index: '',
companyName,
comanyNo,
total: 0,
children: []
};
companyMap.set(companyName, company);
result.push(company);
}
company.total += total;
let project = projectMap.get(projectName);
if (!project) {
project = {
index: '',
projectName,
projectNo,
total: 0,
children: []
};
projectMap.set(projectName, project);
company.children.push(project);
}
project.total += total;
const site = {
index: '',
siteName,
siteNo,
total
};
project.children.push(site);
}
let companyIndex = 1; let projectIndex = 1; let siteIndex = 1;
for (const company of result) {
company.index = ${companyIndex};
companyIndex++;
for (const project of company.children) {
project.index = `${company.index}-${projectIndex}`;
projectIndex++;
for (const site of project.children) {
site.index = `${project.index}-${siteIndex}`;
siteIndex++;
}
}
projectIndex = 1;
siteIndex = 1;
}
return result; }
console.log(formatData(data));
原文地址: https://www.cveoy.top/t/topic/pejw 著作权归作者所有。请勿转载和采集!