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

# orderBy

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

## orderBy(O, (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 does not have an option to order in descending order instead of ascending. In
these cases, you can simply invert the order of the resulting array using `-`, for example:

#### Source

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

#### Output

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

## orderBy(Array<T>, (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 will be used as the criteria to sort the list. It should return a simple value (String, Number, etc)</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 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(Null, (item: Nothing, index: Nothing) -> Null): Null

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