pluck

DataWeave 2.1 は Mule 4.1 と互換性があります。 Mule 4.1 の標準サポートは 2020 年 11 月 2 日に終了しました。このバージョンの Mule は、拡張サポートが終了する 2022 年 11 月 2 日にその​​すべてのサポートが終了します。

このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。

標準サポートが適用されている最新バージョンの Mule 4 にアップグレード​することをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。

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

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

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

パラメータ

名前 説明

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 値に使用できるようにするヘルパー関数。