foop
Version:
interfaces that describe their intentions.
55 lines (52 loc) • 4.73 kB
JavaScript
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