pluck

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

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

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

パラメータ

Name (名前) 説明

object

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

mapper

入力オブジェクトのマッピングに使用する key (キー)、value (値)、省略可能な index (インデックス) の 1 つ以上。

次の例では pluck を使用して、<prices/> 内の各要素 (オブジェクト) を反復処理し、 キー、値、およびインデックスの配列を返します。

ソース

%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($),
  "indices" : readXml.prices pluck($$$)
}

出力

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

指定したキーと値をパラメータとして使用することもできます。たとえば、次の変換例では上記の prices (価格) の入力を反復処理し、 1 つの要素を持つ配列を出力します。payload pluck(payload.prices)payload pluck(payload[0]) と同じ結果になります。

ソース

%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")
---
payload pluck(readXml.prices)

出力

[
  {
    "basic": "9.99",
    "premium": "53.00",
    "vip": "398.99"
  }
]

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

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

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub