zip

DataWeave 2.2 is compatible and bundled with Mule 4.2. Standard Support for Mule 4.2 ended on May 2, 2021, and this version of Mule will reach its End of Life on May 2, 2023, when Extended Support ends.

Deployments of new applications to CloudHub that use this version of Mule are no longer allowed. Only in-place updates to applications are permitted.

MuleSoft recommends that you upgrade to the latest version of Mule 4 that is in Standard Support so that your applications run with the latest fixes and security enhancements.

zip(Array<T>, Array<R>): Array<Array<T | R>>

Merges elements from two arrays into an array of arrays.

The first sub-array in the output array contains the first indices of the input sub-arrays. The second index contains the second indices of the inputs, the third contains the third indices, and so on for every case where there are the same number of indices in the arrays.

Parameters

Name Description

left

The array on the left-hand side of the function.

right

The array on the right-hand side of the function.

Example

This example zips the arrays located to the left and right of zip. Notice that it returns an array of arrays where the first index, ([0,1]) contains the first indices of the specified arrays. The second index of the output array ([1,"b"]) contains the second indices of the specified arrays.

Source

%dw 2.0
output application/json
---
[0,1] zip ["a","b"]

Output

[ [0,"a"], [1,"b"] ]

Example

This example zips elements of the left-hand and right-hand arrays. Notice that only elements with counterparts at the same index are returned in the array.

Source

%dw 2.0
output application/json
---
{
  "a" : [0, 1, 2, 3] zip ["a", "b", "c", "d"],
  "b" : [0, 1, 2, 3] zip ["a"],
  "c" : [0, 1, 2, 3] zip ["a", "b"],
  "d" : [0, 1, 2] zip ["a", "b", "c", "d"]
}

Output

{
  "a": [
    [0,"a"],
    [1,"b"],
    [2,"c"],
    [3,"d"]
    ],
  "b": [
    [0,"a"]
  ],
  "c": [
    [0,"a"],
    [1,"b"]
  ],
  "d": [
    [0,"a"],
    [1,"b"],
    [2,"c"]
  ]
}

Example

This example zips more than two arrays. Notice that items from ["aA", "bB"] in list4 are not in the output because the other input arrays only have two indices.

Source

%dw 2.0
output application/json
var myvar = {
   "list1": ["a", "b"],
   "list2": [1, 2, 3],
   "list3": ["aa", "bb"],
   "list4": [["A", "B", "C"], [11, 12], ["aA", "bB"]]
}
---
((myvar.list1 zip myvar.list2) zip myvar.list3) zip myvar.list4

Output

[
  [
    [ [ "a", 1 ], "aa" ], [ "A", "B", "C" ]
  ],
  [
    [ [ "b", 2 ], "bb" ], [ 11, 12 ]
  ]
]

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub