List.sort
sort($functionOrOptions={}) -> self
Description
Sort the order of items by their value.
By default, the sorting is in natural order.
$items = ['d', 'a', 'c', 'e', 'b'] $items.sort() //= ['a', 'b', 'c', 'd', 'e']
Options
If $functionOrOptions is a map, it can include the following options.
| Option | Value | Description |
|---|---|---|
reverse |
true/false | Sort in descending order. |
ignoreCase |
true/false | Case-insensitive sort. |
ascii |
true/false | Sort by each character’s ASCII code, instead of natural order. |
$items = ['d', 'a', 'c', 'e', 'b']
$items.sort(-reverse)
//= ['e', 'd', 'c', 'b', 'a']
$items = ['d', 'A', 'c', 'E', 'b']
$items.sort({ reverse, ignoreCase })
//= ['E', 'd', 'c', 'b', 'A']
Sort Functions
If $functionOrOptions is a function, it will be called with 2 arguments, each containing a list item that will be compared to the other.
The function should return a numeric comparison (usually with the <=> operator) of the items to create custom sort behavior. (-1 = before, 0 = equal, 1 = after)
$items = [3, 1, -2, 5, -4]
$items.sort(fun ($a, $b) {
return $a.absolute() <=> $b.absolute()
})
//= [1, -2, 3, -4, 5]
// With expression function x{...}
$items.sort(x{ $a.absolute() <=> $b.absolute() })
//= [1, -2, 3, -4, 5]
// To reverse order, swap the arguments
$items.sort(x{ $b.absolute() <=> $a.absolute() })
^ ^
//= [5, -4, 3, -2, 1]