mirror of
https://github.com/roleypoly/roleypoly.git
synced 2025-04-24 19:39:11 +00:00
* fix role order in picker * one of these sorts will flip it omg * fix role list * revert forced role sort in api
24 lines
465 B
TypeScript
24 lines
465 B
TypeScript
export const sortBy = <T, Key extends keyof T>(
|
|
array: T[],
|
|
key: Key,
|
|
predicate?: (a: T[typeof key], b: T[typeof key]) => number,
|
|
reverse?: boolean
|
|
) => {
|
|
let postmultiplier = reverse ? -1 : 1;
|
|
|
|
return array.sort((a, b) => {
|
|
if (predicate) {
|
|
return predicate(a[key], b[key]);
|
|
}
|
|
|
|
if (a[key] === b[key]) {
|
|
return 0;
|
|
}
|
|
|
|
if (a[key] > b[key]) {
|
|
return 1 * postmultiplier;
|
|
}
|
|
|
|
return -1 * postmultiplier;
|
|
});
|
|
};
|