Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MuleSoft Dataweave reduce

I try to get my head around the reduce function in Mulesoft Dataweave 2.0.

expected outcome:

{
  "dev": "1",
  "test": "2",
  "uat": "3",
  "prod": "4"
}

my dataweave code:

%dw 2.0
var invar = [
  {"id": "1", "name": "dev"},
  {"id": "2", "name": "test"},
  {"id": "3", "name": "uat"},
  {"id": "4", "name": "prod"}
]
output application/json
---
// invar reduce() ???  requirment: it must be done with reduce function.

Thanks

like image 525
Ben Avatar asked Sep 12 '26 09:09

Ben


1 Answers

The trick is to set the accumulator to the correct value when DataWeave can not deduce it automatically:

%dw 2.0
var invar = [
  {"id": "1", "name": "dev"},
  {"id": "2", "name": "test"},
  {"id": "3", "name": "uat"},
  {"id": "4", "name": "prod"}
]
output application/json
---
invar reduce ((item, accumulator= {}) -> accumulator ++ {(item.name):item.id})
like image 124
aled Avatar answered Sep 14 '26 21:09

aled