Contact Free trial Login

zip

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

Merges elements of two lists (arrays) into a single list (an array of arrays in consecutive n-tuples).

Imagine two input lists each as one side of a zipper. Similar to the interlocking teeth of a zipper, the zip function interlocks each element from each input list, one element at a time.

Parameters

Name Description

left

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

right

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

Example

This example interdigitates (zips together) 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 input lists.

Source

%dw 2.0
output application/json
var myvar = {
   "list1": ["a", "b", "c", "d"],
   "list2": [1, 2, 3],
   "list3": ["aa", "bb", "cc", "dd"],
   "list4": [["a", "b", "c"], [1, 2, 3, 4], ["aa", "bb", "cc", "dd"]]
}
---
myvar.list1 zip myvar.list2 zip myvar.list3 zip myvar.list4

Output

[
  [
    [
      ["a",1],
      "aa"
    ],
    ["a","b","c"]
  ],
  [
    [
      ["b",2],
      "bb"
    ],
    [1,2,3,4]
  ],
  [
    [
      ["c",3],
      "cc"
    ],
    ["aa","bb","cc","dd"]
  ]
]

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub