%dw 2.0
output application/json
---
{ letter: "b", letter: "c", letter: "a" } orderBy ((value, key) -> value)
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 |
---|---|
|
The object to reorder. |
|
The result of the function is used as the criteria to reorder the object. |
orderBy<T, R>(array: Array<T>, criteria: (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 serves as criteria for sorting the array. It should return a simple value ( |
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:
Example
This example sorts an array of people based on their age.
Example
This example sorts an array of DateTime in descending order.
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]