Contact Us 1-800-596-4880

orderBy

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

Reorders the elements of an input using criteria that acts on selected elements of that input.

This version of orderBy takes an object as input. Other versions act on an input array or handle a null value.

Note that you can reference the index with the anonymous parameter $$ and the value with $.

Parameters

Name Description

object

The object to reorder.

criteria

The result of the function is used as the criteria to reorder the object.

Example

This example alphabetically orders the values of each object in the input array. Note that orderBy($.letter) produces the same result as orderBy($[0]).

Source

%dw 2.0
output application/json
---
[{ letter: "e" }, { letter: "d" }] orderBy($.letter)

Output

[
  {
    "letter": "d"
  },
  {
    "letter": "e"
  }
]

Example

The orderBy function doesn’t have an option to sort the result in a descending order. In these cases, invert the order of the resulting array using -:

Source

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

Output

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

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

Sorts an array using the specified criteria.

Parameters

Name Description

array

The array to sort.

criteria

The result of the function serves as criteria for sorting the array. It should return a simple value (String, Number, and so on).

Example

This example sorts an array of numbers based on the numeric values.

Source

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

Output

[ 2, 3, 3 ]

Example

This example sorts an array of people based on their age.

Source

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

Output

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

Example

This example sorts an array of DateTime in descending order.

Source

%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"})

Output

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

Example

This example changes the order of the objects in a JSON array. The expression first orders them alphabetically by the value of the Type key, then reverses the order based on the [-1 to 0].

Source

%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]

Output

[
  {
    "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

Helper function that enables orderBy to work with a null value.