Flex Gateway新着情報
Governance新着情報
Monitoring API Manager
DataWeave 2.1 は Mule 4.1 と互換性があります。 Mule 4.1 の標準サポートは 2020 年 11 月 2 日に終了しました。このバージョンの Mule は、拡張サポートが終了する 2022 年 11 月 2 日にそのすべてのサポートが終了します。 このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。 標準サポートが適用されている最新バージョンの Mule 4 にアップグレードすることをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。 |
reduce
は、入力配列の各要素に対して順番に減算ラムダ式 (関数) を適用し、アキュムュレータを新しい結果で置き換えます。このラムダ式では、現在の入力配列要素と現在のアキュムュレータ値の両方を使用できます。
注意: 配列が空で、アキュムュレータにデフォルト値が設定されていない場合、 null 値が返されます。
名前 | 説明 |
---|---|
|
配列の現在の要素。このパラメータがラムダ式に指定されていない場合は、 |
|
アキュムュレータ。 アキュムュレータのパラメータは構文 アキュムュレータの初期値が設定されていない場合、アキュムュレータは入力配列の最初の要素に設定されます。次に、ラムダ式は入力配列の 2 番目の要素を使用してコールされます。 アキュムュレータの初期値とラムダ式によって、減算操作で作成される結果の型が決まります。アキュムュレータが |
次の例では、入力配列の値の合計を返します。
次の例では、アキュムュレータを使用して入力配列の値を連結し、 結果を文字列で返します。
次の例では、配列の最初の要素を "z"
と 3
に設定します。
次の例は、reduce
のさまざまな使用方法を示します。たとえば、
Boolean (ブール) 値やオブジェクトの配列への適用例などがあります。
%dw 2.0
output application/json
var in0 =
{
"a": [0, 1, 2, 3, 4, 5],
"b": ["a", "b", "c", "d", "e"],
"c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }],
"d": [true, false, false, true, true]
}
---
{
"a" : [0, 1, 2, 3, 4, 5] reduce $$,
"b": ["a", "b", "c", "d", "e"] reduce $$,
"c": [{ "letter": "a" }, { "letter": "b" }, { "letter": "c" }] reduce ((elt, acc = "z") -> acc ++ elt.letter),
"d": [{ letter: "a" }, { letter: "b" }, { letter: "c" }] reduce $$,
"e": [true, false, false, true, true] reduce ($$ and $),
"f": [true, false, false, true, true] reduce ((elt, acc) -> acc and elt),
"g": [true, false, false, true, true] reduce ((elt, acc = false) -> acc and elt),
"h": [true, false, false, true, true] reduce $$,
"i": in0.a reduce ($$ + $),
"j": in0.a reduce ((elt, acc) -> acc + elt),
"k": in0.a reduce ((elt, acc = 3) -> acc + elt),
"l": in0.a reduce $$,
"m": in0.b reduce ($$ ++ $),
"n": in0.b reduce ((elt, acc) -> acc ++ elt),
"o": in0.b reduce ((elt, acc = "z") -> acc ++ elt),
"p": in0.b reduce $$,
"q": in0.c reduce ((elt, acc = "z") -> acc ++ elt.letter),
"r": in0.c reduce $$,
"s": in0.d reduce ($$ and $),
"t": in0.d reduce ((elt, acc) -> acc and elt),
"u": in0.d reduce ((elt, acc = false) -> acc and elt),
"v": in0.d reduce $$,
"w": ([0, 1, 2, 3, 4] reduce ((elt, acc = {}) -> acc ++ { a: elt })) pluck $,
"x": [] reduce $$,
"y": [] reduce ((elt,acc = 0) -> acc + elt)
}
{
"a": 0,
"b": "a",
"c": "zabc",
"d": { "letter": "a" },
"e": false,
"f": false,
"g": false,
"h": true,
"i": 15,
"j": 15,
"k": 18,
"l": 0,
"m": "abcde",
"n": "abcde",
"o": "zabcde",
"p": "a",
"q": "zabc",
"r": { "letter": "a" },
"s": false,
"t": false,
"u": false,
"v": true,
"w": [ 0, 1, 2, 3, 4 ],
"x": null,
"y": 0
}