Нет, вы не можете получить доступ к каким-либо индексам, вот документация reduce
https://docs.mulesoft.com/mule-runtime/4.1/dw-core-functions-reduce
Что вы можете сделать, так это подсчитать элементы самостоятельно, изменив структуру вашего аккумулятора. : ls={counter=0,data={}}
Теперь вы можете использовать счетчик, чтобы добавлять по одному на итерацию и отслеживать вещи: {counter: ls.counter + 1, data: ls.data ++ To: {dev: item.warehouse}}
Как вы понимаете, вам нужно будет добавить условное выражение, чтобы различать From
и To
.
Если у меня будет время позже, я сделаю это для вас, или кто-то другой может меня опередить.
EDIT: вот лучшее, что я можно сделать на основе вашего вопроса, но вы должны понять:
%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;)