Initial commit
[yaffs-website] / node_modules / grunt-contrib-watch / node_modules / globule / node_modules / lodash / times.js
1 var baseTimes = require('./_baseTimes'),
2     castFunction = require('./_castFunction'),
3     toInteger = require('./toInteger');
4
5 /** Used as references for various `Number` constants. */
6 var MAX_SAFE_INTEGER = 9007199254740991;
7
8 /** Used as references for the maximum length and index of an array. */
9 var MAX_ARRAY_LENGTH = 4294967295;
10
11 /* Built-in method references for those with the same name as other `lodash` methods. */
12 var nativeMin = Math.min;
13
14 /**
15  * Invokes the iteratee `n` times, returning an array of the results of
16  * each invocation. The iteratee is invoked with one argument; (index).
17  *
18  * @static
19  * @since 0.1.0
20  * @memberOf _
21  * @category Util
22  * @param {number} n The number of times to invoke `iteratee`.
23  * @param {Function} [iteratee=_.identity] The function invoked per iteration.
24  * @returns {Array} Returns the array of results.
25  * @example
26  *
27  * _.times(3, String);
28  * // => ['0', '1', '2']
29  *
30  *  _.times(4, _.constant(0));
31  * // => [0, 0, 0, 0]
32  */
33 function times(n, iteratee) {
34   n = toInteger(n);
35   if (n < 1 || n > MAX_SAFE_INTEGER) {
36     return [];
37   }
38   var index = MAX_ARRAY_LENGTH,
39       length = nativeMin(n, MAX_ARRAY_LENGTH);
40
41   iteratee = castFunction(iteratee);
42   n -= MAX_ARRAY_LENGTH;
43
44   var result = baseTimes(length, iteratee);
45   while (++index < n) {
46     iteratee(index);
47   }
48   return result;
49 }
50
51 module.exports = times;