orderBy

orderBy<K, V, R, O <: { (K)?: V }>(object: O, criteria: (value: V, key: K) -> R): O

入力の要素を、その入力の選択された要素で動作する条件を使用して並び替えます。

このバージョンの ​orderBy​ は、入力としてオブジェクトを使用します。その他のバージョンは、入力配列で動作するか、​null​ 値を処理します。

インデックスは匿名パラメーター ​$$​、値は ​$​ で参照できます。

パラメーター

名前 説明

object

並び替えるオブジェクト。

criteria

関数の結果は、オブジェクトを並び替える条件として使用されます。

次の例では、入力配列内の各オブジェクトの値をアルファベット順に並べます。​orderBy($.letter)​ は ​orderBy($[0])​ と同じ結果になります。

ソース

%dw 2.0
output application/json
---
{ letter: "b", letter: "c", letter: "a" } orderBy ((value, key) -> value)

出力

{
  "letter": "a",
  "letter": "b",
  "letter": "c"
}

orderBy<T, R>(array: Array<T>, criteria: (item: T, index: Number) -> R): Array<T>

指定された条件を使用して配列を並び替えます。

パラメーター

名前 説明

array

並び替える配列。

criteria

関数の結果は、配列を並び替える条件として機能します。単純な値 (​String​、​Number​、など) を返す必要があります。

次の例では、数値に基づいて数値の配列を並び替えます。

ソース

%dw 2.0
output application/json
---
[3,2,3] orderBy $

出力

[ 2, 3, 3 ]

orderBy​ 関数には、昇順ではなく降順で並び替えるオプションはありません。この場合は、たとえば ​-​ を使用して、結果の配列の順序を単に反転することができます。

ソース

%dw 2.0
output application/json
---
orderDescending: ([3,8,1] orderBy -$)

出力

{ "orderDescending": [8,3,1] }

次の例では、age (年齢) に基づいて人の配列を並び替えます。

ソース

%dw 2.0
output application/json
---
[{name: "Santiago", age: 42},{name: "Leandro", age: 29}, {name: "Mariano", age: 35}] orderBy (person) -> person.age

出力

[
  {
    name: "Leandro",
    age: 29
  },
  {
    name: "Mariano",
    age: 35
  },
  {
    name: "Santiago",
    age: 42
  }
]

次の例では、DateTime の配列を降順に並び替えます。

ソース

%dw 2.0
output application/json
---
[|2020-10-01T23:57:59.017Z|, |2022-12-22T12:12:12.011Z|, |2020-10-01T12:40:10.012Z|, |2020-10-01T23:57:59.021Z|]
  orderBy -($ as Number {unit: "milliseconds"})

出力

[
  "2022-12-22T12:12:12.011Z",
  "2020-10-01T23:57:59.021Z",
  "2020-10-01T23:57:59.017Z",
  "2020-10-01T12:40:10.012Z"
]

この例は、JSON 配列内のオブジェクトの順序を変更します。この式は、最初に ​Type​ キーの値をアルファベット順に並び替えてから、​[-1 to 0]​ に基づいて順序を逆にします。

ソース

%dw 2.0
var myInput = [
    {
        "AccountNumber": "987999321",
        "NameOnAccount": "QA",
        "Type": "AAAA",
        "CDetail": {
            "Status": "Open"
        }
    },
    {
        "AccountNumber": "12399978",
        "NameOnAccount": "QA",
        "Type": "BBBB",
        "CDetail": {}
    },
    {
        "AccountNumber": "32199974",
        "NameOnAccount": "QA",
        "Type": "CCCC",
        "CDetail": {}
    }
]
output application/json
---
(myInput orderBy $.Type)[-1 to 0]

出力

[
  {
    "AccountNumber": "32199974",
    "NameOnAccount": "QA",
    "Type": "CCCC",
    "CDetail": {

    }
  },
  {
    "AccountNumber": "12399978",
    "NameOnAccount": "QA",
    "Type": "BBBB",
    "CDetail": {

    }
  },
  {
    "AccountNumber": "987999321",
    "NameOnAccount": "QA",
    "Type": "AAAA",
    "CDetail": {
      "Status": "Open"
    }
  }
]

orderBy(value: Null, criteria: (item: Nothing, index: Nothing) -> Null): Null

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