【问题标题】:Mulesoft Dataweave reduceMulesoft Dataweave 减少
【发布时间】:2020-12-24 14:04:26
【问题描述】:

我试图了解 Mulesoft Dataweave 2.0 中的 reduce 函数。

预期结果:

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

我的数据编织代码:

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

谢谢

【问题讨论】:

  • 有一个答案here我解释reduce

标签: mule dataweave mule4


【解决方案1】:

诀窍是在 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})

【讨论】:

  • 感谢 Aled,我仍然无法理解为什么它有效。因为当您进行连接时,它会将字符串添加在一起。因此 Dataweave “知道”reduce = {} 的索引参数时结果必须在大括号之间。对吧?
  • reduce() 对数组进行操作,但连接操作“++”可以对数组、字符串、对象和多种类型的日期组合进行操作。因为我将累加器设置为一个对象,而连接的第二个参数是另一个对象,所以它会按照docs.mulesoft.com/mule-runtime/4.3/… 中的说明进行对象连接
  • 没错,++函数针对不同的DataWeave类型进行了重载。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多