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

如何在JSONata代码中实现正确的嵌套分组?

JSONata 三层嵌套分组实现方案

实现逻辑

通过$group()函数逐层嵌套分组:先按lspf_numlot做最外层分组,再在每个分组内按IDFase二次分组,最后在IDFase分组内按prop_attrezzatura完成最终分组,同时可按需添加聚合逻辑。

示例代码

原始数据示例

[
  {"lspf_numlot": "Lot1", "IDFase": "FaseA", "prop_attrezzatura": "Tool1", "value": 10},
  {"lspf_numlot": "Lot1", "IDFase": "FaseA", "prop_attrezzatura": "Tool1", "value": 20},
  {"lspf_numlot": "Lot1", "IDFase": "FaseB", "prop_attrezzatura": "Tool2", "value": 15},
  {"lspf_numlot": "Lot2", "IDFase": "FaseA", "prop_attrezzatura": "Tool1", "value": 5}
]

JSONata分组代码

$group(
  $,
  "lspf_numlot",
  function($lotGroup) {
    {
      "lspf_numlot": $lotGroup.lspf_numlot,
      "faseGroups": $group(
        $lotGroup,
        "IDFase",
        function($faseGroup) {
          {
            "IDFase": $faseGroup.IDFase,
            "attrezzaturaGroups": $group(
              $faseGroup,
              "prop_attrezzatura",
              function($attGroup) {
                {
                  "prop_attrezzatura": $attGroup.prop_attrezzatura,
                  "totalValue": $sum($attGroup.value), // 可替换为计数、平均值等聚合操作
                  "detailItems": $attGroup // 保留原始条目,不需要可删除
                }
              }
            )
          }
        }
      )
    }
  }
)

代码说明

  • 第一层分组:以lspf_numlot为键对整个数据集分组,每个分组作为参数传入外层回调函数。
  • 第二层分组:在每个lspf_numlot分组内,用IDFase再次分组,生成faseGroups数组。
  • 第三层分组:在每个IDFase分组内,用prop_attrezzatura做最终分组,同时通过$sum()等函数实现数据聚合。

输出结果示例

[
  {
    "lspf_numlot": "Lot1",
    "faseGroups": [
      {
        "IDFase": "FaseA",
        "attrezzaturaGroups": [
          {
            "prop_attrezzatura": "Tool1",
            "totalValue": 30,
            "detailItems": [
              {"lspf_numlot": "Lot1", "IDFase": "FaseA", "prop_attrezzatura": "Tool1", "value": 10},
              {"lspf_numlot": "Lot1", "IDFase": "FaseA", "prop_attrezzatura": "Tool1", "value": 20}
            ]
          }
        ]
      },
      {
        "IDFase": "FaseB",
        "attrezzaturaGroups": [
          {
            "prop_attrezzatura": "Tool2",
            "totalValue": 15,
            "detailItems": [
              {"lspf_numlot": "Lot1", "IDFase": "FaseB", "prop_attrezzatura": "Tool2", "value": 15}
            ]
          }
        ]
      }
    ]
  },
  {
    "lspf_numlot": "Lot2",
    "faseGroups": [
      {
        "IDFase": "FaseA",
        "attrezzaturaGroups": [
          {
            "prop_attrezzatura": "Tool1",
            "totalValue": 5,
            "detailItems": [
              {"lspf_numlot": "Lot2", "IDFase": "FaseA", "prop_attrezzatura": "Tool1", "value": 5}
            ]
          }
        ]
      }
    ]
  }
]

内容的提问来源于stack exchange,提问作者Gippy73

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 18:51:06