UNPKG

@feugene/mu

Version:

Helpful TS utilities without dependencies

31 lines (24 loc) 848 B
import isFunction from '~/is/isFunction' import type { TextNumber } from '~/internal/types' /** * Invokes the iteratee `n` times, returning an array of the results of * each invocation. The iteratee is invoked with one argument; (index). * * @param {number} n The number of times to invoke `iteratee`. * @param {Function} [iteratee] The function invoked per iteration. * @returns {Array} Returns the array of results. * @example * * times(3); // => ['0', '1', '2'] */ type F = (idx: number) => TextNumber export default function times(n: number = 1, iteratee?: TextNumber | F): TextNumber[] { const result = new Array(n) let index = -1 const isFn = isFunction(iteratee) while (++index < n) { const iterValue = isFn ? (iteratee as F)(index) : null result[index] = iterValue || iteratee || index } return result }