partition
Split an array into two: elements that match the predicate, and elements that don't. Returns a 2-element array of arrays.
array(required): the array to partitionpredicate(required): lambda(element) -> boolean
bash
echo '{"orders": [{"id": 1, "amount": 500}, {"id": 2, "amount": 1500}, {"id": 3, "amount": 200}]}' | utlx -e 'partition($input.orders, (o) -> o.amount > 1000)'
# [[{"id": 2, "amount": 1500}], [{"id": 1, "amount": 500}, {"id": 3, "amount": 200}]]utlx
let validated = partition($input.records, (r) -> r.email != null && r.name != null)
{
valid: validated[0],
invalid: validated[1],
validCount: count(validated[0]),
invalidCount: count(validated[1])
}