Mule 在dataweave 2.0中访问reduce函数中的项索引
我的DataWeave代码如下所示:-Mule 在dataweave 2.0中访问reduce函数中的项索引,mule,dataweave,Mule,Dataweave,我的DataWeave代码如下所示:- Result: Data reduce (item,ls={}) -> ls ++ From: {dev: item.warehouse} 是否有方法检查item对象的索引。我需要根据item对象的索引执行条件设置 例如: Item=数据[0]执行此操作 Result: Data reduce (item,ls={}) -> ls ++ From: {dev: item.warehouse} Result: Data reduce (ite
Result: Data reduce (item,ls={}) -> ls ++ From: {dev: item.warehouse}
是否有方法检查item对象的索引。我需要根据item对象的索引执行条件设置
例如:
Item=数据[0]执行此操作
Result: Data reduce (item,ls={}) -> ls ++ From: {dev: item.warehouse}
Result: Data reduce (item,ls={}) -> ls ++ To: {dev: item.warehouse}
项目=数据[1]执行此操作
Result: Data reduce (item,ls={}) -> ls ++ From: {dev: item.warehouse}
Result: Data reduce (item,ls={}) -> ls ++ To: {dev: item.warehouse}
原始代码如下所示:
Result : ( Data reduce (
item,ls={}) -> ls ++
From:{id: "111",(if (item.sign == "333") {status: "OPEN"} else if (item.sign == "444") {status: "HOLD"} else {status: item.sign})}
每当项目的索引为奇数时,我需要添加“From”,每当项目的索引为偶数时,我需要添加“to”
因为我没有条件,我总是得到“From”不,你不能访问任何索引,这里是
reduce
您可以通过修改Accumulator的结构来自己计算项目:ls={counter=0,data={}
现在,您可以使用计数器在每次迭代中添加一个计数器并跟踪内容:{counter:ls.counter+1,data:ls.data++to:{dev:item.warehouse}
正如您所理解的,您需要添加一个条件来区分From
和to
如果我以后有时间的话,我会帮你做的,否则别人会比我抢先一步
编辑:根据你的问题,这里是我能做的最好的,但你应该知道:
%dw 2.0
output application/dw
var inputdata = [{warehouse: 100},{warehouse: 56}, {warehouse:1000}]
---
inputdata reduce (
(e, acc={c: 0, data: {From: {}, To: {}}}) ->
{
c: acc.c+1,
data: {
From: if (isEven(acc.c)) (acc.data.From ++ {warehouse: e.warehouse}) else acc.data.From,
To: if (isEven(acc.c)) acc.data.To else (acc.data.To ++ {warehouse: e.warehouse})
}
}
)
如果您想充分利用DW SO社区,请始终提供适当的转换示例输入和输出;) 我已经更新了原始代码,如果你帮助我的条件,这将是伟大的提供输入和输出样本数据请,也许与算法的解释。