map

map<T, R>(@StreamCapable items: Array<T>, mapper: (item: T, index: Number) -> R): Array<R>

配列の項目を反復処理し、結果を新しい配列に出力します。

パラメーター

名前 説明

items

マップする配列。

mapper

各 ​index​ で動作するか、場合によってはその項目の各 ​item​ で動作するために使用する式またはセレクター。

次の例では、入力配列 (​["jose", "pedro", "mateo"]​) を反復処理して DataWeave オブジェクトの配列を生成します。匿名関数 ​(value, index) → {index: value}​ は、入力内の各項目をオブジェクトにマップします。 {index: value}​ が示すように、入力配列からの各インデックスが出力オブジェクトのキーになり、入力配列の各値がそのオブジェクトの値になります。

ソース

%dw 2.0
output application/json
---
["jose", "pedro", "mateo"] map (value, index) -> { (index) : value}

出力

[ { "0": "jose" }, { "1": "pedro" }, { "2": "mateo" } ]

次の例では、入力の項目およびインデックスで動作する匿名関数を使用して、入力配列 (​['a', 'b', 'c']​) を反復処理します。入力配列の項目ごとに ​index + 1​ (​index​ プラス 1) をアンダースコア (​_​) および対応する ​value​ と連結し、配列 ​[ "1_a", "2_b", "3_c" ]​ を返します。

ソース

%dw 2.0
output application/json
---
['a', 'b', 'c'] map ((value, index) -> (index + 1) ++ '_' ++ value)

出力

[ "1_a", "2_b", "3_c" ]

mapper​ (マッパー) 関数のパラメーターが指定されない場合、インデックスは ​$$​、値は ​$​ で参照できます。次の例では、入力配列 ​['joe', 'pete', 'matt']​ の各項目を反復処理し、インデックスがキーとして選択されているオブジェクトの配列を返します。 配列の各項目の値は、返されるオブジェクトの値として選択されます。数値キーを文字列に変換するには、​$$​ を引用符で囲む必要があります。

ソース

%dw 2.0
output application/json
---
['joe', 'pete', 'matt'] map ( "$$" : $)

出力

[
  { "0": "joe" },
  { "1": "pete" },
  { "2": "matt" }
]

次の例では、オブジェクトのリストを反復処理し、値を CSV に変換します。この各オブジェクトは CSV 行を表します。​map​ 操作では、リスト内の各エントリの ​age​ と ​address​ を使用してオブジェクトを生成します。 $​ は反復処理での暗黙的な変数を表します。

ソース

%dw 2.0
output application/csv
---
[{
 "age": 14 ,
 "name": "Claire"
}, {
 "age": 56,
 "name": "Max"
}, {
 "age": 89,
 "name": "John"
}] map {
   age: $.age,
   name: $.name
}

出力

age,name
14,Claire
56,Max
89,John

map(@StreamCapable value: Null, mapper: (item: Nothing, index: Nothing) -> Any): Null

map​ を ​null​ 値に使用できるようにするヘルパー関数。