cancel
Showing results for 
Search instead for 
Did you mean: 

Reduce an array of objects into a single object with the sum of fields as the result

vgautam64
New Contributor III

I have an array of the following form:

vgautam64_1-1698229926838.png

I want to convert this array of objects into a single object that has the same fields along with Debit_Amount and Credit_Amount fields summed up.

vgautam64_2-1698230019762.png

Any help is appreciated!

1 ACCEPTED SOLUTION

koryknick
Employee
Employee

@vgautam64 - I believe this solves your question in the simplest way I can think of.  Use a Mapper snap with the following configuration:

koryknick_0-1701289383325.png

It appears to me that you only need the field elements and values from the first group element: $group[0]

The two jsonPath statements are simply pulling all values for the Debit and Credit Amounts into an array of numbers

Finally, the Array.reduce() method is used to aggregate that list of numbers into a final total.

Hope this helps!

 

View solution in original post

7 REPLIES 7

bojanvelevski
Valued Contributor

Hi @vgautam64 ,

Try the following expression in a mapper:

$group.reduce((acc,curr,ind)=> acc.extend(curr.mapKeys((val,key)=>key+ind)),{})

Let me know what you think.

Regards,

Bojan

koryknick
Employee
Employee

@vgautam64 - I believe this solves your question in the simplest way I can think of.  Use a Mapper snap with the following configuration:

koryknick_0-1701289383325.png

It appears to me that you only need the field elements and values from the first group element: $group[0]

The two jsonPath statements are simply pulling all values for the Debit and Credit Amounts into an array of numbers

Finally, the Array.reduce() method is used to aggregate that list of numbers into a final total.

Hope this helps!

 

vgautam64
New Contributor III

@koryknick Thank You! This worked out for me pretty well.