minBy

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

配列を反復処理し、配列から比較可能な要素の最小値を返します。

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

パラメーター

名前 説明

item

入力配列内の要素 (型が ​Number​ (数値)、​Boolean​ (ブール)、​DateTime​ (日時)、​LocalDateTime​ (ローカル日時)、​Date​ (日付)、​LocalTime​ (ローカル時刻)、​Time​ (時刻)、​TimeZone​ (タイムゾーン) のいずれか)。​$​ で参照できます。

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

ソース

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

出力

{ "a" : 1 }

次の例では、変数 ​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
---
{
  myMinBy: {
    byDateTime: [ myDateTime1, myDateTime2 ] minBy ((item) -> item),
    byDate: [ myDateTime1 as Date, myDateTime2 as Date ] minBy ((item) -> item),
    byTime: [ myDateTime1 as Time, myDateTime2 as Time ] minBy ((item) -> item),
    aBoolean: [ true, false, (0 > 1), (1 > 0) ] minBy $,
    emptyArray: [] minBy ((item) -> item)
  }
}

出力

{
  "myMinBy": {
    "byDateTime": "2017-10-01T22:57:59-03:00",
    "byDate": "2017-10-01",
    "byTime": "22:57:59-03:00",
    "aBoolean": false,
    "emptyArray": null
  }
}