UNPKG

@prelude/array

Version:

Array module.

18 lines (16 loc) 479 B
/** * Like `at` but wraps using modulo on length. * @throws {TypeError} if array is empty or index is not a safe integer. */ const modulo = <T>(values: T[], index: number): T => { if (!Number.isSafeInteger(index)) { throw new TypeError(`Expected safe integer index, got ${index}.`) } const n = values.length if (n === 0) { throw new TypeError('Expected non empty array.') } return values[((index % n) + n) % n] } export default modulo