maxBy

maxBy<T>(@StreamCapable array: Array<T>, criteria: (item: T) -> Comparable): T | Null

配列を反復処理し、配列から ​Comparable​ 要素の最大値を返します。

項目のデータ型は同じである必要があります。同じでない場合、​maxBy​ はエラーをスローし、配列が空の場合は、関数は ​null​ を返します。

パラメーター

名前 説明

array

入力配列。

criteria

配列から ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、または ​TimeZone​ (タイムゾーン) データ型の項目を選択するための式。​$​ で参照できます。

次の例では、配列のオブジェクト (キー-値ペア) 内の最大数値を返します。​item.a​ を使用してオブジェクトの値を選択しています。​[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy $.a​ のように、匿名パラメーターを使用して同じ式を記述することもできます。

ソース

%dw 2.0
output  application/json
---
[ { "a" : 1 }, { "a" : 3 }, { "a" : 2 } ] maxBy ((item) -> item.a)

出力

{ "a" : 3 }

次の例では、変数 ​myDateTime1​ および ​myDateTime2​ で定義された入力から最新の ​DateTime​ (日時)、​Date​ (日付)、および ​Time​ (時刻) を取得します。また、この関数は空の配列に対して null を返すことも示しています。

ソース

%dw 2.0
var myDateTime1 = "2017-10-01T22:57:59-03:00"
var myDateTime2 = "2018-10-01T23:57:59-03:00"
output application/json
---
{
  myMaxBy: {
    byDateTime: [ myDateTime1, myDateTime2 ] maxBy ((item) -> item),
    byDate: [ myDateTime1 as Date, myDateTime2 as Date ] maxBy ((item) -> item),
    byTime: [ myDateTime1 as Time, myDateTime2 as Time ] maxBy ((item) -> item),
    emptyArray: [] maxBy ((item) -> item)
  }
}

出力

{
  "myMaxBy": {
    "byDateTime": "2018-10-01T23:57:59-03:00",
    "byDate": "2018-10-01",
    "byTime": "23:57:59-03:00",
    "emptyArray": null
  }
}