sortBy
📊 Sorts an array of objects by one or more properties or iteratees.
Info
Immutable: This function does not mutate the original array.
Syntax
TypeScript
import { sortBy } from '@opentf/std'; sortBy<T>( arr: T[], options?: { criteria?: [key: keyof T | ((obj: T) => unknown), order: "asc" | "desc"][] } ): T[]
Parameters
arr: The source array of objects.options.criteria: A list of tuples where each tuple contains a key (property name or function) and the sort order ('asc'or'desc').
Returns
A new sorted array.
Examples
TypeScript
const fruits = [ { name: 'banana', amount: 2 }, { name: 'apple', amount: 4 }, { name: 'pineapple', amount: 2 }, { name: 'mango', amount: 1 }, { name: 'orange', amount: 5 }, ]; sortBy(fruits, { criteria: [['name', 'asc']] }); // OR sortBy(fruits, { criteria: [[(o) => o.name, 'asc']] }); //=> [ // { name: 'apple', amount: 4 }, // { name: 'banana', amount: 2 }, // { name: 'mango', amount: 1 }, // { name: 'orange', amount: 5 }, // { name: 'pineapple', amount: 2 }, // ] sortBy(fruits, { criteria: [['amount', 'desc'], ['name', 'asc']] }); // OR sortBy(fruits, { criteria: [[o => o.amount, 'desc'], [o => o.name, 'asc']] }); //=> [ // { name: 'orange', amount: 5 }, // { name: 'apple', amount: 4 }, // { name: 'banana', amount: 2 }, // { name: 'pineapple', amount: 2 }, // { name: 'mango', amount: 1 } // ]