# 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*,
} ] ***