Sort by Property

Generate a comparator function to sort arrays of objects by a given key, ascending or descending.

Sorting arrays of objects is a common task—whether you’re ordering users by name or sorting products by price. This generic TypeScript utility returns a comparator that sorts by a specified key. It handles strings, numbers, and dates and lets you choose ascending or descending order.

export type SortOrder = "asc" | "desc";
 
export function sortBy<T>(key: keyof T, order: SortOrder = "asc") {
  return (a: T, b: T) => {
    const va = a[key];
    const vb = b[key];
    if (va === vb) return 0;
    const modifier = order === "asc" ? 1 : -1;
    return va > vb ? modifier : -modifier;
  };
}

Use it like items.sort(sortBy('createdAt', 'desc')) to sort an array of items by their createdAt property. Because it’s generic, the compiler will catch typos if you reference a key that doesn’t exist on the type. Adjust or extend the comparator if you need locale‑aware string comparisons or custom logic.