Array module
at: <T>(values: T[], index: number) => TReturns value at
index.Throws {Error} if index is out of bounds.
atClamp: <T>(values: T[], index: number) => TLike
atbut bounds less than zero index to 0 and out of bound to last.bsearch: <T>(values: T[], cmp: Cmp1<T>) => numberclone: <T>(values: T[]) => T[]Cmp: typeof import("@prelude/cmp")deleteSwapRandom: <T>(values: T[]) => TDeletes and returns random element. Removed element is replaced by last element.
Throws {Error} if
valuesarray is empty.Returns deleted element.
first: <T>(values: T[]) => TReturns first element of an array.
Throws if array length is 0.
groups: <T, R extends string | number | boolean | symbol>(values: T[], keyOfValue: (value: T) => R) => T[][]Returns values grouped by key (result of
keyOfValue).indices: (n: number) => number[]Returns array with 0 to n-1 indices.
last: <T>(values: T[]) => TReturns last element of an array.
Throws {Error}
maybeAt: <T>(values: T[], index: number) => TReturns value at
indexorundefined.maybeFirst: <T>(values: T[]) => TReturns first element of an array or
undefined.maybeLast: <T>(values: T[]) => TReturns last element of an array or
undefined.maybeSample: <T>(values: T[]) => TReturns random element or
undefinedif array is empty.atCycle: <T>(values: T[], index: number) => TLike
atbut wraps using modulo on length.Throws {Error} if array is empty or index is not a safe integer.
nulls: (n: number) => null[]Returns an array of
nnulls.of: <T>(n: number, valueOrFunction: T | ((index: number) => T)) => T[]ones: (n: number) => number[]permutations: <T>(values: T[]) => Generator<T[], any, unknown>Based on Permutation Generation Methods, Robert Sedgewick.
Returns permutations of an array.
randomIndex: (length: number) => numbersample: <T>(values: T[]) => TReturns random element.
Throws if array is empty.
shuffle: <T>(values: T[]) => T[]In-place shuffle.
shuffled: <T>(values: T[]) => T[]Returns shuffled array.
sort: <T>(values: T[], cmp: t<T>) => T[]sorted: <T>(values: T[], cmp: t<T>) => T[]swap: <T>(values: T[], i: number, j: number) => T[]In-place swap elements at index
iandj.swapDeleteAt: <T>(values: T[], index: number) => TswapDeleteFirst: <T>(values: T[], predicate: (value: T, index: number, values: T[]) => boolean) => Tunique: <T, R extends string | number | boolean | symbol>(values: T[], keyOfValue: (value: T) => R) => T[]Returns unique array.
zeroes: (n: number) => number[]Returns an array of
nzeroes.
Usage
npm i -E @prelude/array
import * as A from '@prelude/array'
License
This package is dedicated to the public domain under CC0 1.0.