MuleSoft Dataweave 减少

Ben*_*Ben 3 mule dataweave mule4

我尝试了解 Mulesoft Dataweave 2.0 中的归约函数。

预期结果:

{
  "dev": "1",
  "test": "2",
  "uat": "3",
  "prod": "4"
}
Run Code Online (Sandbox Code Playgroud)

我的数据编织代码:

%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.

Run Code Online (Sandbox Code Playgroud)

谢谢

ale*_*led 6

技巧是当 DataWeave 无法自动推导累加器时将其设置为正确的值:

%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})
Run Code Online (Sandbox Code Playgroud)

  • reduce() 对数组进行操作,但连接操作“++”可以对数组、字符串、对象和多种类型的日期组合进行操作。因为我将累加器设置为一个对象,并且串联的第二个参数是另一个对象,所以它执行对象串联,如 https://docs.mulesoft.com/mule-runtime/4.3/dw-core-functions-plusplus# 中所述。加加3 (3认同)
  • 确切地说,++ 函数针对不同的 DataWeave 类型进行了重载。 (2认同)