jsonlogic-hs-0.1.0.0: test/community/array/reduce.json
[
"Basic Operations",
{
"description": "Reduce array with sum",
"rule": {
"reduce": [
{"var": "numbers"},
{"+": [{"var": "current"}, {"var": "accumulator"}]},
0
]
},
"data": {"numbers": [1, 2, 3, 4]},
"result": 10
},
{
"description": "Reduce array with multiplication",
"rule": {
"reduce": [
{"var": "numbers"},
{"*": [{"var": "current"}, {"var": "accumulator"}]},
1
]
},
"data": {"numbers": [1, 2, 3, 4]},
"result": 24
},
"Object Operations",
{
"description": "Reduce objects to sum of specific field",
"rule": {
"reduce": [
{"var": "items"},
{"+": [{"var": "current.price"}, {"var": "accumulator"}]},
0
]
},
"data": {
"items": [
{"id": 1, "price": 10},
{"id": 2, "price": 20},
{"id": 3, "price": 30}
]
},
"result": 60
},
{
"description": "Reduce to create aggregated object",
"rule": {
"reduce": [
{"var": "transactions"},
{"+": [{"var": "accumulator"}, {"var": "current.amount"}]},
0
]
},
"data": {
"transactions": [
{"type": "credit", "amount": 100},
{"type": "debit", "amount": -50},
{"type": "credit", "amount": 75}
]
},
"result": 125
},
"Edge Cases",
{
"description": "Reduce empty array returns initial value",
"rule": {
"reduce": [
{"var": "empty"},
{"+": [{"var": "current"}, {"var": "accumulator"}]},
0
]
},
"data": {"empty": []},
"result": 0
},
{
"description": "Reduce null array returns initial value",
"rule": {
"reduce": [
{"var": "missing"},
{"+": [{"var": "current"}, {"var": "accumulator"}]},
42
]
},
"data": {},
"result": 42
},
{
"description": "Initial value is optional",
"rule": {
"reduce": [
{"var": "numbers"},
{"+": [{"var": "current"}, {"var": "accumulator"}]}
]
},
"data": {"numbers": [1, 2, 3]},
"result": 6
},
"Complex Operations",
{
"description": "Reduce with string concatenation",
"rule": {
"reduce": [
{"var": "words"},
{"cat": [{"var": "accumulator"}, " ", {"var": "current"}]},
""
]
},
"data": {"words": ["Hello", "World", "!"]},
"result": " Hello World !"
},
{
"description": "Reduce with conditional logic",
"rule": {
"reduce": [
{"var": "numbers"},
{"if": [
{">": [{"var": "current"}, 0]},
{"+": [{"var": "accumulator"}, {"var": "current"}]},
{"var": "accumulator"}
]},
0
]
},
"data": {"numbers": [-1, 2, -3, 4]},
"result": 6
}
]