You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用任意编程语言基于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ᕮᗪ ᖴᗩᘔᗩᒪ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:09:03