pluck

pluck<K, V, R>(@StreamCapable object: { (K)?: V }, mapper: (value: V, key: K, index: Number) -> R): Array<R>

1 つのオブジェクトを配列にマップする場合に便利です。​pluck​ はオブジェクトを反復処理してそのオブジェクトからキー、値、またはインデックスの配列を返します。

これは、配列ではなくオブジェクトを返す 類似の ​mapObject​ の代替となります。

パラメーター

名前 説明

object

マップするオブジェクト。

mapper

指定されたオブジェクトを配列にマップするために使用する ​key​、​value​、または ​index​ (省略可能) を提供する式またはセレクター。

次の例では、匿名マッパー関数 (​(value,key,index) → { (index) : { (value):key} }​) を使用して ​{ "a":"b","c":"d"}​ を反復処理し、指定されたオブジェクトの各キー-値ペアを反転し、インデックスをキーとして返します。マッパーは名前付きパラメーターを使用して、オブジェクトのキー、値、インデックスを識別します。​{"a":"b","c":"d"} pluck { ($$$) : { ($):$$} }​ のように、匿名パラメーターを使用して同じ式を記述することができます。 ​mapObject​ を使用するほぼ同じ例とは異なり、​pluck​ は出力を配列として返します。

ソース

%dw 2.0
output application/json
---
{"a":"b","c":"d"} pluck (value,key,index) -> { (index) : { (value):key} }

出力

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

次の例では ​pluck​ を使用して、​<prices/>​ 内の各要素を反復処理し、キー、値、およびインデックスの配列を返します。匿名パラメーターを使用してこれらを取得します。値を数値に変換するのに ​as Number​ が使用されています。それ以外の場合、文字列として返されます。

ソース

%dw 2.0
output application/json
var readXml = read("<prices>
    <basic>9.99</basic>
    <premium>53.00</premium>
    <vip>398.99</vip>
    </prices>", "application/xml")
---
"result" : {
  "keys" : readXml.prices pluck($$),
  "values" : readXml.prices pluck($) as Number,
  "indices" : readXml.prices pluck($$$)
}

出力

{
   "result": {
     "keys": [ "basic", "premium", "vip" ],
     "values": [ 9.99, 53, 398.99 ],
     "indices": [ 0, 1, 2 ]
   }
}

pluck(value: Null, mapper: (value: Nothing, key: Nothing, index: Nothing) -> Any): Null

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