filterObject

filterObject<K, V>(@StreamCapable value: { (K)?: V }, criteria: (value: V, key: K, index: Number) -> Boolean): { (K)?: V }

オブジェクト内のキー-値ペアのリストを反復処理し、一致するオブジェクトのみを返す式を適用することで、残りを出力から除外します。

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

パラメーター

名前 説明

value

評価するソースオブジェクト。

criteria

オブジェクトの ​value​、​key​、または ​index​ を選択するブール式。

次の例では、オブジェクトの値が ​"apple"​ と等しい場合にそのオブジェクトを出力します。

ソース

%dw 2.0
output application/json
---
{"a" : "apple", "b" : "banana"} filterObject ((value) -> value == "apple")

出力

{ "a": "apple" }

次の例では、キーが「letter」で開始するオブジェクトのみを出力します。DataWeave ​startsWith​ 関数は ​true​ または ​false​ を返します。キーの代わりに匿名パラメーターを使用して式を記述することができます (​((value, key) → key startsWith "letter")​: ($$ startsWith "letter")`)。

ソース

%dw 2.0
output application/json
---
{"letter1": "a", "letter2": "b", "id": 1} filterObject ((value, key) -> key startsWith "letter")

出力

{ "letter1": "a", "letter2": "b" }

次の例では、インデックスが 1 未満の、配列内のオブジェクトのみを出力します。1 番目のオブジェクトは常にこれに該当します。インデックスの代わりに匿名パラメーターを使用して式を記述することができます (​((value, key, index) → index < 1)​: ($$$ < 1)​)。

ソース

%dw 2.0
output application/json
---
{ "1": "a", "2": "b", "3": "c"} filterObject ((value, key, index) -> index < 1)

出力

{ "1": "a" }

次の例では、入力 JSON オブジェクト内の ​null​ 以外の値のみを含むオブジェクトを出力します。

ソース

%dw 2.0
output application/json
var myObject = {
    str1 : "String 1",
    str2 : "String 2",
    str3 : null,
    str4 : "String 4",
}
---
myObject filterObject $ != null

出力

{
  "str1": "String 1",
  "str2": "String 2",
  "str4": "String 4"
}

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

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