基于数据键中对象数组的匹配键和值的相加

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

请在下面的数据编织中提供帮助这里是输入

[
  {
    "item": "1",
    "quantity": "100",
    "code":"ABC"
  },
  {
    "item": "1",
    "quantity": "200",
    "code":"ABC"
  },
   {
    "item": "1",
    "quantity": "200",
    "code":"CDB"
  },
  {
    "item": "12",
    "quantity": "200",
     "code":"ABC"
  }
]

这是预期的输出

[
  {
    "item": "1",
    "quantity": "300"
    "code":"ABC"
  },
   {
    "item": "1",
    "quantity": "200"
    "code":"CDB"
  },
  {
    "item": "12",
    "quantity": "200"
     "code":"ABC"
  }
]

基于匹配的键和值,必须对dataweave中的对象数组进行添加

dataweave
3个回答
0
投票

尝试这样的事情。

%dw 2.0
output application/json
---

(payload groupBy (key,index) ->(key.item ++ key.code)) mapObject {
   a: {
       item: $[0].item,
       quantity: (if (sizeOf ($)  > 1) ($.quantity reduce ($$ as Number 
                  {format: '#'} + $ as Number {format: '#'}))  else  $.quantity[0] 
                   as Number {format: "#"}),
       code:$[0].code
   }
}

1
投票

添加摘录而不是那个mapObject ..类似的东西

%dw 2.0
output application/json
---

(payload groupBy (key,index) ->(key.item ++ key.code)) pluck {
   a: {
       item: $[0].item,
       quantity: (if (sizeOf ($)  > 1) ($.quantity reduce ($$ as Number 
                  {format: '#'} + $ as Number {format: '#'}))  else  $.quantity[0] 
                   as Number {format: "#"}),
       code:$[0].code
   }
}

0
投票

尝试一下:

%dw 2.0
output application/json
var data = [
  {
    "item": "1",
    "quantity": "100",
    "code":"ABC"
  },
  {
    "item": "1",
    "quantity": "200",
    "code":"ABC"
  },
   {
    "item": "1",
    "quantity": "200",
    "code":"CDB"
  },
  {
    "item": "12",
    "quantity": "200",
     "code":"ABC"
  }
]
---
data groupBy ($.code ++ $.item) 
pluck $
reduce (e,acc=[]) -> acc + {
    item: e[0].item,
    code: e[0].code,
    quantity: sum(e.*quantity) as String
}
© www.soinside.com 2019 - 2024. All rights reserved.