如何使用任意编程语言基于JSON数据按指定规则构建树形结构
JSON数据转层级树形结构实现
需求
- 将输入的扁平销售数据按一级分类
category分组 - 每个一级分类下挂载对应二级分类
subcategory节点 - 二级分类下仅保留
sale(销售额)字段作为子节点,忽略profit(利润)字段 - 输出符合指定的嵌套树形结构
实现代码(JavaScript)
function convertToTree(flatData) { const categoryGroups = {}; // 遍历扁平数据完成分组 flatData.forEach(item => { const { category, subcategory, sale } = item; // 不存在对应一级分类则初始化 if (!categoryGroups[category]) { categoryGroups[category] = { name: category, children: [] }; } // 插入二级分类和销售额节点 categoryGroups[category].children.push({ name: subcategory, children: [ { name: "sale", value: sale } ] }); }); // 组装根节点返回最终结构 return { name: "data", children: Object.values(categoryGroups) }; } // 输入测试数据 const data = [ { category: 'Techonology', subcategory: 'laptop', sale: 19000, profit: 909049, }, { category: 'Furniture', subcategory: 'badge', sale: 2009900, profit: 699600, }, { category: 'Techonology', subcategory: 'chair', sale: 30000, profit: 500, }, { category: 'Furniture', subcategory: 'bed', sale: 400, profit: 200000, }, ]; // 调用方法打印结果 console.log(JSON.stringify(convertToTree(data), null, 2));
输出结果
{ "name": "data", "children": [ { "name": "Techonology", "children": [ { "name": "laptop", "children": [ { "name": "sale", "value": 19000 } ] }, { "name": "chair", "children": [ { "name": "sale", "value": 30000 } ] } ] }, { "name": "Furniture", "children": [ { "name": "badge", "children": [ { "name": "sale", "value": 2009900 } ] }, { "name": "bed", "children": [ { "name": "sale", "value": 400 } ] } ] } ] }
内容的提问来源于stack exchange,提问作者SYᕮᗪ ᖴᗩᘔᗩᒪ
相关产品推荐
相关产品推荐

