reduce

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

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

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

reduce(Array<T>, (element: T, accumulator: T) -> T): T | Null

reduce​ は、入力配列の各要素に対して順番に減算ラムダ式 (関数) を適用し、アキュムュレータを新しい結果で置き換えます。このラムダ式では、現在の入力配列要素と現在のアキュムュレータ値の両方を使用できます。

注意: 配列が空で、アキュムュレータにデフォルト値が設定されていない場合、 null 値が返されます。

パラメータ

名前 説明

element

配列の現在の要素。このパラメータがラムダ式に指定されていない場合は、​$​ として参照することもできます。

acc

アキュムュレータ。​$$​ として参照することもできます。減算操作の反復後に毎回、ラムダ式の結果を保存するために使用します。

アキュムュレータのパラメータは構文 ​acc = initValue​ を使用して初期値に設定できます。この場合、ラムダ式は入力配列の最初の要素を使用してコールされます。次に、その結果が新しいアキュムュレータ値として設定されます。

アキュムュレータの初期値が設定されていない場合、アキュムュレータは入力配列の最初の要素に設定されます。次に、ラムダ式は入力配列の 2 番目の要素を使用してコールされます。

アキュムュレータの初期値とラムダ式によって、減算操作で作成される結果の型が決まります。アキュムュレータが ​acc = {}​ に設定されている場合、結果は通常 Object (オブジェクト) 型になります。アキュムュレータが ​acc = []​ に設定されている場合、結果は通常 Array (配列) 型になります。 アキュムュレータが ​acc = ""​ に設定されている場合、結果は通常 String (文字列) 型になります。

次の例では、入力配列の値の合計を返します。

ソース

%dw 2.0
output application/json
---
 {
    "sum" : [0, 1, 2, 3, 4, 5] reduce ($$ + $),
    "sum" : [0, 1, 2, 3, 4, 5] reduce ((elt, acc) -> acc + elt)
 }
DataWeave

出力

{
  "sum": 15,
  "sum": 15
}
JSON

次の例では、アキュムュレータを使用して入力配列の値を連結し、 結果を文字列で返します。

ソース

%dw 2.0
output application/json
---
{
   "concat" : ["a", "b", "c", "d"] reduce ($$ ++ $),
   "concat" : ["a", "b", "c", "d"] reduce ((elt, acc) -> acc ++ elt)
}
DataWeave

出力

{
  "concat": "abcd",
  "concat": "abcd"
}
JSON

次の例では、配列の最初の要素を ​"z"​ と ​3​ に設定します。

ソース

%dw 2.0
output application/json
---
{
   "concat" : ["a", "b", "c", "d"] reduce ((elt, acc = "z") -> acc ++ elt),
   "sum": [0, 1, 2, 3, 4, 5] reduce ((elt, acc = 3) -> acc + elt)
}
DataWeave

出力

{
  "concat": "zabcd"
  "sum": 18
}
JSON

次の例は、​reduce​ のさまざまな使用方法を示します。たとえば、 Boolean (ブール) 値やオブジェクトの配列への適用例などがあります。

ソース

出力

{
  "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
}
JSON

reduce(Array<T>, (item: T, accumulator: A) -> A): A