@jsvision/datagrid / sortRowsMulti
Function: sortRowsMulti()
sortRowsMulti<
T>(rows,keys,columns):T[]
Defined in: datagrid/src/sort.ts:109
Ordered multi-key sort. Compares each column's typed value in key order, returning the first non-zero result; equal-on-all-keys rows keep their source order (stable). Never mutates rows — always returns a new array. Keys whose columnId is absent from columns are silently dropped; an empty (or all-unknown) key list returns the rows in source order.
Type Parameters
T
T
Parameters
rows
readonly T[]
The row snapshot to order (not mutated).
keys
readonly SortKey[]
The ordered sort directives (first is primary).
columns
ReadonlyMap<string, GridColumn<T, unknown>>
The column model, keyed by GridColumn.id, providing each key's value accessor and its optional compare/nulls.
Returns
T[]
A new array of rows in sorted order.
Example
import { column, sortRowsMulti } from '@jsvision/datagrid';
interface Sale { region: string; qty: number; }
const rows: Sale[] = [
{ region: 'East', qty: 150 },
{ region: 'West', qty: 800 },
];
const columns = [
column({ id: 'region', title: 'Region', value: (r: Sale) => r.region }),
column({ id: 'qty', title: 'Qty', value: (r: Sale) => r.qty }),
];
// qty ascending, then region descending:
const ordered = sortRowsMulti(
rows,
[{ columnId: 'qty', dir: 'asc' }, { columnId: 'region', dir: 'desc' }],
new Map(columns.map((c) => [c.id, c])),
);