In a previous blog post we learned about the zip
function. DataWeave also gives us the unzip
function that will do the opposite for an array with arrays. The input argument of the unzip
function is an array where the elements are also arrays. This could be created by the zip
function or just defined as data structure directly. The unzip
function will take from each array the same index element and return it as an array with the index elements. For example with the input array [[1, "A"], [2, "B"]]
will be unzipped to [[1, 2], ["A", "B"]]
. When the number of elements in the arrays that need to unzipped are not equal, the unzip
function will only return the elements from the index with the most elements.
In the following example we use the unzip
function with different input arrays:
Source
%dw 2.0 var fruitPrices = [["Apple", 2.30], ["Pear", 1.82], ["Banana", 2.06]] var fruitPricesIncomplete = [["Apple", 2.30], ["Pear", 1.82], [2.06]] output application/json --- { // unzip will break up each array into separate arrays. unzip: unzip(fruitPrices), // When the arrays to break up don't have the same // number of elemnts unzip can only return elements // from the index that has the most elements. unzipIncomplete: unzip(fruitPricesIncomplete), // When the arrays to unzip have more than 2 elements // the results will be the number of arrays equal to the number of elements. // In this case we get 3 arrays as a result as the array to // unzip has 3 elements. unzipMoreElements: unzip([[1, "a", "A"], [2, "b", "B"]]) }
Output
{ "unzip": [ [ "Apple", "Pear", "Banana" ], [ 2.30, 1.82, 2.06 ] ], "unzipIncomplete": [ [ "Apple", "Pear", 2.06 ] ], "unzipMoreElements": [ [ 1, 2 ], [ "a", "b" ], [ "A", "B" ] ] }
Written with DataWeave 2.4.