UNPKG

foop

Version:

interfaces that describe their intentions.

55 lines (52 loc) 4.73 kB
var curry = require('../fp/curry') var toLength = require('../cast/toLength') /** * - Run a function **n** times. * - Calls an input function `n` times, returning an array containing the results * of those function calls. * - `fn` is passed one argument: The current value of `n`, which begins at `0` * and is gradually incremented to `n - 1`. * - Invokes the iteratee `n` times, returning an array of the results of * each invocation. The iteratee is invoked with one argumentindex). * * @since 5.0.0-beta.1 * @memberOf fp * @curried 2 * * @NOTE lodash & underscore have `(number, fn)`, ramda has `(fn, number)` * * @param {number} n The number of times to invoke `iteratee`. * @param {Function} iteratee The function invoked per iteration. * @return {Array} Returns the array of results. * * @name times * @fork 0.1.0 * @category Util * @category List * @sig (Number -> a) -> Number -> [a] * * {@link https://github.com/lodash/lodash/blob/master/times.js lodash-times} * {@link https://github.com/jashkenas/underscore/blob/master/underscore.js#L1436 underscore-times} * {@link https://github.com/ramda/ramda/blob/master/src/times.js ramda-times} * @see {@link ramda-times} * @see {@link underscore-times} * @see {@link lodash-times} * @see cast/toLength * * @example * * times(3, String) * //=> ['0', '1', '2'] * * times(4, () => 0) * //=> [0, 0, 0, 0] * */ function times(n, iteratee) { n = toLength(n) var result = new Array(Math.max(0, n)) for (var i = 0; i < n; i++) { result[i] = iteratee(i) } return result } module.exports = curry(2, times) //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXMuanMiLCJzb3VyY2VzIjpbInRpbWVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGN1cnJ5ID0gcmVxdWlyZSgnLi4vZnAvY3VycnknKVxuY29uc3QgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9jYXN0L3RvTGVuZ3RoJylcblxuLyoqXG4gKiAtIFJ1biBhIGZ1bmN0aW9uICoqbioqIHRpbWVzLlxuICogLSBDYWxscyBhbiBpbnB1dCBmdW5jdGlvbiBgbmAgdGltZXMsIHJldHVybmluZyBhbiBhcnJheSBjb250YWluaW5nIHRoZSByZXN1bHRzXG4gKiBvZiB0aG9zZSBmdW5jdGlvbiBjYWxscy5cbiAqIC0gYGZuYCBpcyBwYXNzZWQgb25lIGFyZ3VtZW50OiBUaGUgY3VycmVudCB2YWx1ZSBvZiBgbmAsIHdoaWNoIGJlZ2lucyBhdCBgMGBcbiAqIGFuZCBpcyBncmFkdWFsbHkgaW5jcmVtZW50ZWQgdG8gYG4gLSAxYC5cbiAqIC0gSW52b2tlcyB0aGUgaXRlcmF0ZWUgYG5gIHRpbWVzLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2ZcbiAqIGVhY2ggaW52b2NhdGlvbi4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnRpbmRleCkuXG4gKlxuICogQHNpbmNlIDUuMC4wLWJldGEuMVxuICogQG1lbWJlck9mIGZwXG4gKiBAY3VycmllZCAyXG4gKlxuICogQE5PVEUgbG9kYXNoICYgdW5kZXJzY29yZSBoYXZlIGAobnVtYmVyLCBmbilgLCByYW1kYSBoYXMgYChmbiwgbnVtYmVyKWBcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm4ge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICpcbiAqIEBuYW1lIHRpbWVzXG4gKiBAZm9yayAwLjEuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBjYXRlZ29yeSBMaXN0XG4gKiBAc2lnIChOdW1iZXIgLT4gYSkgLT4gTnVtYmVyIC0+IFthXVxuICpcbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iL21hc3Rlci90aW1lcy5qcyBsb2Rhc2gtdGltZXN9XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL2Jsb2IvbWFzdGVyL3VuZGVyc2NvcmUuanMjTDE0MzYgdW5kZXJzY29yZS10aW1lc31cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vcmFtZGEvcmFtZGEvYmxvYi9tYXN0ZXIvc3JjL3RpbWVzLmpzIHJhbWRhLXRpbWVzfVxuICogQHNlZSB7QGxpbmsgcmFtZGEtdGltZXN9XG4gKiBAc2VlIHtAbGluayB1bmRlcnNjb3JlLXRpbWVzfVxuICogQHNlZSB7QGxpbmsgbG9kYXNoLXRpbWVzfVxuICogQHNlZSBjYXN0L3RvTGVuZ3RoXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgIHRpbWVzKDMsIFN0cmluZylcbiAqICAgLy89PiBbJzAnLCAnMScsICcyJ11cbiAqXG4gKiAgIHRpbWVzKDQsICgpID0+IDApXG4gKiAgIC8vPT4gWzAsIDAsIDAsIDBdXG4gKlxuICovXG5mdW5jdGlvbiB0aW1lcyhuLCBpdGVyYXRlZSkge1xuICBuID0gdG9MZW5ndGgobilcbiAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5KE1hdGgubWF4KDAsIG4pKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykgcmVzdWx0W2ldID0gaXRlcmF0ZWUoaSlcbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGN1cnJ5KDIsIHRpbWVzKVxuIl0sIm5hbWVzIjpbImNvbnN0IiwibGV0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3BDQSxHQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0QzVDLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUU7RUFDMUIsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7RUFDZkEsR0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztFQUN4QyxLQUFLQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBQTtFQUNuRCxPQUFPLE1BQU07Q0FDZDs7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDOyJ9