Skip to main content

Function: nullsFirst()

nullsFirst<T>(comparator): Comparator<Nullable<T>>

Defined in: compare/combinators/index.ts:120

Wraps a comparator to place null/undefined values first.

When comparing two null/undefined values, they are considered equal. When comparing null/undefined with a non-null value, null comes first.

Type Parameters

T

T

Parameters

comparator

Comparator<Nullable<T>>

The comparator for non-null values

Returns

Comparator<Nullable<T>>

A comparator that places nulls first

Example

interface User {
name: string
lastLogin: Date | null
}

const users = [
{ name: 'Alice', lastLogin: new Date('2024-01-15') },
{ name: 'Bob', lastLogin: null },
{ name: 'Charlie', lastLogin: new Date('2024-01-10') },
{ name: 'Dave', lastLogin: null }
]

// Sort by last login, nulls first
users.sort(nullsFirst(ascending(u => u.lastLogin ?? new Date(0))))
// => [{ name: 'Bob', lastLogin: null },
// { name: 'Dave', lastLogin: null },
// { name: 'Charlie', lastLogin: 2024-01-10 },
// { name: 'Alice', lastLogin: 2024-01-15 }]

See

nullsLast - to place nulls at the end