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.