08-01-2022 04:04 AM
Hi,
Can anyone pls help me why the values after copy snap getting changed without any transofrmation as shown in below pics.
In place of copy snap i used mapper also. Then also showing incorrect values for the Order quantity and Order value.
Below expressions used to calculate totalOrderQuantity and totalOrderValue.
$orderLineItems.reduce((acc,curr)=> acc+curr.totalItemQuantity,0)
$orderLineItems.reduce((acc,curr)=> acc+(curr.itemDenomination*curr.totalItemQuantity),0)
Pls let me know if you need the .slp
Thankyou.
Solved! Go to Solution.
08-01-2022 06:37 AM
Update - this issue was not related to the Array.reduce() function, but with how the target path was defined. After a short offline discussion with @Madhu1 we were able to resolve it using a Structure snap to push the results into the target object correctly.
08-01-2022 05:12 AM
Hi @Madhu1 - welcome to the Community!
Based on what you have shown as the expressions used to calculated your values, you’re getting into an issue with memory addressing. The Array.reduce() function works on the array directly, so the concurrent executions of reduce() on the same array can yield unpredictable results (as you have seen). Try the following:
[].concat($orderLineItems).reduce((acc,curr)=> acc+curr.totalItemQuantity,0)
[].concat($orderLineItems).reduce((acc,curr)=> acc+(curr.itemDenomination*curr.totalItemQuantity),0)
This should resolve the issue you are experiencing by first copying the array into a new memory address before performing the reduce() method.
08-01-2022 06:37 AM
Update - this issue was not related to the Array.reduce() function, but with how the target path was defined. After a short offline discussion with @Madhu1 we were able to resolve it using a Structure snap to push the results into the target object correctly.
08-02-2022 05:13 AM
Thankyou @koryknick . Absolutely its working as per expected results.