# How to calc sum of nested arrays with group by

Hi,

I'm new to node-red and have a question regarding how to calculate the sum with group by of a nested array.

The outcome I would like to have is (the sum of of amount of the payments grouped by type):
[
{"type":"card",
"'amount":1231.15
},
{"type":"cash",
"'amount":99.15
}
]

You can try this flow:

``````[
{
"id": "061b7f51de6e3f24",
"type": "inject",
"z": "a442b54b44edc349",
"name": "",
"props": [
{
"v": "[{\"type\":\"card\",\"amount\":1231.15},{\"type\":\"cash\",\"amount\":99.15},{\"type\":\"card\",\"amount\":1231.15},{\"type\":\"cash\",\"amount\":99.15}]",
"vt": "json"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"x": 190,
"y": 140,
"wires": [
[
"58684a2daf702d68"
]
]
},
{
"id": "3617d84d9f3673eb",
"type": "split",
"z": "a442b54b44edc349",
"name": "",
"splt": "\\n",
"spltType": "str",
"arraySplt": 1,
"arraySpltType": "len",
"stream": false,
"x": 550,
"y": 140,
"wires": [
[
"6f49662d80bcc2c5"
]
]
},
{
"id": "3d43b37bc60ef510",
"type": "debug",
"z": "a442b54b44edc349",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1250,
"y": 140,
"wires": []
},
{
"id": "6830e799f0c7d768",
"type": "join",
"z": "a442b54b44edc349",
"name": "",
"mode": "custom",
"build": "object",
"propertyType": "msg",
"key": "topic",
"joiner": "\\n",
"joinerType": "str",
"accumulate": true,
"timeout": "",
"count": "1",
"reduceRight": false,
"reduceExp": "",
"reduceInit": "",
"reduceInitType": "",
"reduceFixup": "",
"x": 870,
"y": 140,
"wires": [
[
"898ba01ab384793d"
]
]
},
{
"id": "58684a2daf702d68",
"type": "change",
"z": "a442b54b44edc349",
"name": "",
"rules": [
{
"t": "set",
"pt": "msg",
"tot": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 370,
"y": 140,
"wires": [
[
"3617d84d9f3673eb"
]
]
},
{
"id": "6f49662d80bcc2c5",
"type": "function",
"z": "a442b54b44edc349",
"name": "",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 700,
"y": 140,
"wires": [
[
"6830e799f0c7d768"
]
]
},
{
"id": "c5d25f23090950e9",
"type": "inject",
"z": "a442b54b44edc349",
"name": "reset",
"props": [
{
"p": "reset",
"v": "true",
"vt": "bool"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"x": 690,
"y": 200,
"wires": [
[
"6830e799f0c7d768"
]
]
},
{
"id": "898ba01ab384793d",
"type": "trigger",
"z": "a442b54b44edc349",
"name": "",
"op1": "",
"op2": "",
"op1type": "nul",
"op2type": "payl",
"duration": "250",
"extend": true,
"overrideDelay": false,
"units": "ms",
"reset": "",
"bytopic": "all",
"topic": "topic",
"outputs": 1,
"x": 1040,
"y": 140,
"wires": [
[
"3d43b37bc60ef510"
]
]
}
]
``````

For sure you can calculate everything within the function node, but this gives in my opinion more an idea how to use the different nodes.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.