如何根据条件合并数组内的对象?

问题描述 投票:0回答:1

这是输入数组,其中包含多个具有键值对的对象。

[
  {
    "countHouses": 1,
    "Name": "Bob",
    "Unique_ID": "12345"
  },
  {
    "countFlats": 4,
    "Name": "Bob",
    "Unique_ID": "12345"
  },
  {
    "countStadiums": 5,
    "Name": "Efac",
    "Unique_ID": "31124"
  },
  {
    "countStadiums": 1,
    "Name": "Bob",
    "Unique_ID": "12345"
  },
  {
    "countFlats": 1,
    "Name": "Efac",
    "Unique_ID__c": "31124"
  },
  {
    "countHouses": 245,
    "Name": "Efac",
    "Unique_ID": "31124"
  },
  {
    "countHouses": 300,
    "Name": "Pox",
    "Unique_ID": "18110"
  }
]

要求是根据 Unique_ID 字段将这些对象合并为数组中的单个对象。另外,如果只有一个可用对象,则该特定对象也应包含在其他两个值为 0 的计数键中。

最终回应

[
  {
    "countHouses": 1,
    "countFlats": 4,
    "countStadiums": 1,
    "Name": "Bob",
    "Unique_ID": "12345"
  },
  {
    "countHouses": 245,
    "countFlats": 1,
    "countStadiums": 5,
    "Name": "Efac",
    "Unique_ID": "31124"
  },
  {
    "countHouses": 300,
    "countFlats": 0,
    "countStadiums": 0,
    "Name": "Pox",
    "Unique_ID": "18110"
  }
]
mule dataweave mulesoft mule4 anypoint-studio
1个回答
0
投票

尝试这样:

%dw 2.0
output application/json
---
payload groupBy ($.Unique_ID) pluck $[0] map{
    "countHouses": $.countHouses default 0,
    "countFlats": $.countFlats default 0,
    "countStadiums": $.countStadiums default 0,
    "Name": $.Name,
    "Unique_ID": $.Unique_ID
  }
© www.soinside.com 2019 - 2024. All rights reserved.