zip

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

2 つのリスト (配列) の要素を 1 つのリスト (連続する n 個のタプルから成る配列の配列) にマージします。

2 つの入力リストがそれぞれジッパーの片側だと想像してください。ジッパーの歯がかみ合うのと同じように、zip 関数は各入力リストの各要素を 1 つずつ組み合わせます。

パラメータ

Name (名前) 説明

left

関数の左側の配列入力。

right

関数の右側の配列入力。

次の例では、左側の配列と右側の配列の要素を組み合わせます。 同じインデックスの対応要素がある要素のみが配列で返されます。

ソース

%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"]
}

出力

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

次の例では、3 つ以上の入力リストを組み合わせます。

ソース

%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

出力

[
  [
    [
      ["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