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 ] } }
Written with DataWeave 2.4.