%dw 2.0
output application/json
---
[{ letter: "e" }, { letter: "d" }] orderBy($.letter)
DataWeave
orderBy
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
Name | Description |
---|---|
|
The object to reorder. |
|
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
Output
[
{
"letter": "d"
},
{
"letter": "e"
}
]
JSON
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
%dw 2.0
output application/json
---
orderDescending: ([3,8,1] orderBy -$)
DataWeave
Output
{ "orderDescending": [8,3,1] }
JSON
orderBy(Array<T>, (item: T, index: Number) -> R): Array<T>
Sorts an array using the specified criteria.
Parameters
Name | Description |
---|---|
|
The array to sort. |
|
The result of the function will be used as the criteria to sort the list. It should return a simple value (String, Number, etc) |
Example
This example sorts an array of numbers based on the numeric values.
Source
%dw 2.0
output application/json
---
[3,2,3] orderBy $
DataWeave
Output
[ 2, 3, 3 ]
JSON
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
DataWeave
Output
[
{
name: "Leandro",
age: 29
},
{
name: "Mariano",
age: 35
},
{
name: "Santiago",
age: 42
}
]
JSON
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]
DataWeave
Output
[
{
"AccountNumber": "32199974",
"NameOnAccount": "QA",
"Type": "CCCC",
"CDetail": {
}
},
{
"AccountNumber": "12399978",
"NameOnAccount": "QA",
"Type": "BBBB",
"CDetail": {
}
},
{
"AccountNumber": "987999321",
"NameOnAccount": "QA",
"Type": "AAAA",
"CDetail": {
"Status": "Open"
}
}
]
JSON
orderBy(Null, (item: Nothing, index: Nothing) -> Null): Null
Helper function that enables orderBy
to work with a null
value.