castComparator()
castComparator<
Item,Key>(key,options?): (a,b) =>number
castComparator<
Item,MappedValue>(mapper,options?): (a,b) =>number
Creates a comparator function for Array.sort() with flexible mapping and comparison options.
Null/undefined values sort last. Dates compare by timestamp. Uses localeCompare for strings.
Type Parametersโ
Item: Itemโ
The type of items being sorted.
Key: Key extends string | number | symbolโ
The type of the property key.
MappedValue: MappedValueโ
The type of the mapped value.
Parametersโ
Overload 1:
key: Keyโ
options?: ComparatorOptions<Item[Key]>โ
Comparison options.
Overload 2:
mapper: (item) => MappedValueโ
options?: ComparatorOptions<MappedValue>โ
Comparison options.
Returns: (a, b): numberโ
A comparator function for Array.sort().
a:
Item
b:Item
Returns:number
Sinceโ
2.0.0
Also known asโ
castComparator (Radashi) ยท comparator (Ramda) ยท โ (Lodash, es-toolkit, Remeda, Effect, Modern Dash, Antfu)
Exampleโ
const users = [{ name: 'John', age: 25 }, { name: 'Jane', age: 30 }];
users.sort(castComparator('age'));
// Sorted by age ascending
users.sort(castComparator((u) => u.name.length));
// Sorted by name length
users.sort(castComparator('age', { reverse: true }));
// Sorted by age descending
How it works?โ
Creates a comparator function for Array.sort() from a property key or mapper function.
Property Key vs Mapper Functionโ
Optionsโ
Default Comparisonโ
| Type | Comparison |
|---|---|
number | Numeric subtraction |
string | localeCompare |
Date | Timestamp comparison |
null/undefined | Sorted last |
Use Casesโ
Sort arrays by property ๐โ
Create reusable comparators for Array.sort() with property names. Essential for clean, readable sorting code.
const users = [
{ name: "John", age: 25 },
{ name: "Jane", age: 30 }
];
users.sort(castComparator("age"));
// [{ name: "John", age: 25 }, { name: "Jane", age: 30 }]
Sort arrays by computed valuesโ
Sort by computed values, custom comparison functions, and reverse order. Essential for complex sorting requirements.
const files = ["report.pdf", "image.png", "data.json"];
// Sort by extension length
files.sort(castComparator((f) => f.split(".").pop()?.length));
Sort in reverse orderโ
Sort arrays in descending order with simple parameter. Essential for common reverse sorting needs.
users.sort(castComparator("age", { reverse: true }));
// [{ name: "Jane", age: 30 }, { name: "John", age: 25 }]
ComparatorOptions<ComparedValue>โ
Options for the comparator function.
Sinceโ
2.0.0
Type Parametersโ
ComparedValue: ComparedValueโ
The type of values being compared.
Propertiesโ
compare()?: (a, b) => numberโ
Custom comparison function.
a:
ComparedValue
b:ComparedValue
Returns:number
reverse?: booleanโ
If true, reverses the sort order.