DataWeave Delight: Partition An Array
In DataWeave we can partition the items in an array using a predicate function by using the partition
function from the dw::core::Arrays
module. The function takes an array as first argument and a predicate function as second argument. The predicate function should return true
or false
for each item of the array. The result is an object with the key success
containing all items from the array that returned true
for the predicate function and a key failure
for the items that returned false
.
In the following example code we use the partition
function on an array:
Source
%dw 2.0
import partition from dw::core::Arrays
var items = ["language", "DataWeave", "username", "mrhaki", "age", 48]
output application/json
---
{
// Partition by item is of type String or not.
example1: items partition ((item) -> typeOf(item) == String),
// Partition by checking if item have value 1 or 4 or not
// using shorthand notation.
example2: (0 to 5) partition ([1, 4] contains $)
}
Output
{
"example1": {
"success": [
"language",
"DataWeave",
"username",
"mrhaki",
"age"
],
"failure": [
48
]
},
"example2": {
"success": [
1,
4
],
"failure": [
0,
2,
3,
5
]
}
}
DataWeave is a functional language designed by MuleSoft for transforming data structures defined in for example JSON, XML or CSV. |
Written with DataWeave 2.4.