# Array sort by struct key
> Supported in: Batch, Streaming
Returns a sorted array of the given input array of structs sorted by the values of the given struct keys.
**Expression categories:** Array
## Declared arguments
* **Input array:** Input array of structs to be sorted.
*Expression\>*
* **Sort keys:** Struct keys to sort array by in order of sort priority. Sort nested struct elements with multiple entries like \['author', 'age'].
*List\>>*
**Output type:** *Array\*
## Examples
### Example 1: Base case
**Argument values:**
* **Input array:** \[ {
**age**: 20,
}, {
**age**: 10,
}, {
**age**: 30,
} ]
* **Sort keys:** \[(age, `ASCENDING`)]
**Output:** \[ {
**age**: 10,
}, {
**age**: 20,
}, {
**age**: 30,
} ]
***
### Example 2: Base case
**Argument values:**
* **Input array:** \[ {
**age**: 20,
}, {
**age**: 10,
}, {
**age**: 30,
} ]
* **Sort keys:** \[(age, `DESCENDING`)]
**Output:** \[ {
**age**: 30,
}, {
**age**: 20,
}, {
**age**: 10,
} ]
***
### Example 3: Base case
**Argument values:**
* **Input array:** \[ {
**age**: 20,
**height**: 77,
}, {
**age**: 20,
**height**...
* **Sort keys:** \[(age, `ASCENDING`), (height, `DESCENDING`)]
**Output:** \[ {
**age**: 10,
**height**: 80,
}, {
**age**: 10,
**height**...
***
### Example 4: Base case
**Argument values:**
* **Input array:** \[ {
**age**: 20,
**height**: 77,
}, {
**age**: 20,
**height**...
* **Sort keys:** \[(age, `ASCENDING`), (height, `ASCENDING`)]
**Output:** \[ {
**age**: 10,
**height**: 65,
}, {
**age**: 10,
**height**...
***
### Example 5: Base case
**Argument values:**
* **Input array:** \[ {
**subStructKey**: {
**age**: 20,
},
}, {
**subStructKey**: {
**age**: 10,
},
}, {
**subStructKey**: {
**age**: 30,
},
} ]
* **Sort keys:** \[(subStructKey.age, `ASCENDING`)]
**Output:** \[ {
**subStructKey**: {
**age**: 10,
},
}, {
**subStructKey**: {
**age**: 20,
},
}, {
**subStructKey**: {
**age**: 30,
},
} ]
***
### Example 6: Null case
**Argument values:**
* **Input array:** \[ {
**age**: *null*,
**height**: 77,
}, {
**age**: *null*,
\*\*...
* **Sort keys:** \[(age, `ASCENDING`)]
**Output:** \[ {
**age**: *null*,
**height**: 77,
}, {
**age**: *null*,
\*\*...
***
### Example 7: Null case
**Argument values:**
* **Input array:** \[ {
**age**: 10,
}, {
**age**: *null*,
}, {
**age**: 30,
} ]
* **Sort keys:** \[(age, `ASCENDING`)]
**Output:** \[ {
**age**: *null*,
}, {
**age**: 10,
}, {
**age**: 30,
} ]
***
### Example 8: Null case
**Argument values:**
* **Input array:** \[ {
**age**: 10,
}, {
**age**: *null*,
}, {
**age**: 30,
} ]
* **Sort keys:** \[(age, `DESCENDING`)]
**Output:** \[ {
**age**: 30,
}, {
**age**: 10,
}, {
**age**: *null*,
} ]
***