filter

filter(Array<T>, (item: T, index: Number) -> Boolean): Array<T>

配列を反復処理し、一致する値を返す式を適用します。

式は ​true​ または ​false​ を返す必要があります。配列の値またはインデックスに対して式が ​true​ を返した場合、その値は出力配列に取得されます。 配列の値またはインデックスに対して式が ​false​ を返した場合、その項目は出力から除外されます。一致する値がない場合、出力配列は空になります。

パラメーター

名前 説明

items

絞り込む配列。

criteria

item​ または ​index​ を選択するブール式。

次の例では、配列内で ​2​ より大きい値の配列を返します。

ソース

[9,2,3,4,5] filter (value, index) -> (value > 2)

出力

[9,3,4,5]

次の例では、​2​ より大きいインデックスで検出されたすべての値の配列を返します。

ソース

[9,2,3,4,5] filter ((value, index) -> (index > 2))

出力

[4,5]

次の例では、​1​ より大きいインデックス (​$$​) で検出された、値が ​5​ 未満のすべての項目の配列を返します。これは、匿名関数で名前付きパラメーターを使用するのではなく、匿名パラメーターをセレクターとして使用しています。

ソース

%dw 2.0
output application/json
---
[9, 2, 3, 4, 5] filter (($$ > 1) and ($ < 5))

出力

[3,4]

この例では、​user​ キーと ​error​ キーを使用するオブジェクトを含む JSON 配列を読み取り、​filter​ 関数を使用して、​error​ キーの値が ​null​ のオブジェクトのみを返します。

ソース

%dw 2.0
output application/json

var users = [
   {
      "user": {
         "name": "123",
         "lastName": "Smith"
      },
      "error": "That name doesn't exists"
   },
   {
      "user": {
         "name": "John",
         "lastName": "Johnson"
      },
      "error": null
   }
]
---
users filter ((item, index) -> item.error == null)

出力

[
  {
    "user": {
      "name": "John",
      "lastName": "Johnson"
    },
    "error": null
  }
]

次の例では、JSON 配列を読み取り、​filter​ 関数を使用して有効な電話番号を抽出します。

入力

{
  "Id": "1184001100000000517",
  "marketCode": "US",
  "languageCode": "en-US",
  "profile": {
  "base": {
     "username": "TheMule",
     "activeInd": "R",
     "phone": [
       {
          "activeInd": "Y",
          "type": "mobile",
          "primaryInd": "Y",
          "number": "230678123"
       },
       {
         "activeInd": "N",
         "type": "mobile",
         "primaryInd": "N",
         "number": ""
       },
       {
          "activeInd": "Y",
          "type": "mobile",
          "primaryInd": "Y",
          "number": "154896523"
       }

      ]
    }
  }
 }

DataWeave スクリプト

%dw 2.0
output application/json
---
{
    id: payload.Id,
    markCode: payload.marketCode,
    languageCode: payload.languageCode,
    username: payload.profile.base.username,
    phoneNumber: (payload.profile.base.phone filter ($.activeInd == "Y" and $.primaryInd== "Y")).number default []
}

出力

{
  "id": "1184001100000000517",
  "markCode": "US",
  "languageCode": "en-US",
  "username": "TheMule",
  "phoneNumber": [
  "230678123"
  "154896523"
]
}

filter(Null, (item: Nothing, index: Nothing) -> Boolean): Null

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