---
schema_version: "1"
id: de4533a5ec119a9f2d37a236a3ba4d5a21daa42474ec26dfa4c5c99b41861dc2
title: orderBy
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/dataweave/2.9/dw-core-functions-orderby.md
canonical_url: https://docs.mulesoft.com/dataweave/2.9/dw-core-functions-orderby
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 1b96616dd1c20281085cc715cd3e91c0bfcd983056bbc3d5c27fdf23ccd09bf4
description: MuleSoft Documentation Site
release: "2.9"
latest: false
---
---
product: DataWeave
version: 2.9
---

# orderBy

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

## 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

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>object</code></p></td><td><p>The object to reorder.</p></td></tr><tr><td><p><code>criteria</code></p></td><td><p>The result of the function is used as the criteria to reorder the object.</p></td></tr></tbody></table>

### 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

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

#### Output

```JSON
[
  {
    "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 `[-1 to 0]`:

#### Source

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

#### Output

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

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>array</code></p></td><td><p>The array to sort.</p></td></tr><tr><td><p><code>criteria</code></p></td><td><p>The result of the function serves as criteria for sorting the array. It should return a simple value (<code>String</code>, <code>Number</code>, and so on).</p></td></tr></tbody></table>

### Example

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

#### Source

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

#### Output

```JSON
[ 2, 3, 3 ]
```

### Example

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

#### Source

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

#### Output

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

### Example

This example sorts an array of DateTime in descending order.

#### Source

```DataWeave
%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

```JSON
[
  "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

```DataWeave
%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

```JSON
[
  {
    "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.
