sampleSize.js
 1  var arraySampleSize = require('./_arraySampleSize'),
 2      baseSampleSize = require('./_baseSampleSize'),
 3      isArray = require('./isArray'),
 4      isIterateeCall = require('./_isIterateeCall'),
 5      toInteger = require('./toInteger');
 6  
 7  /**
 8   * Gets `n` random elements at unique keys from `collection` up to the
 9   * size of `collection`.
10   *
11   * @static
12   * @memberOf _
13   * @since 4.0.0
14   * @category Collection
15   * @param {Array|Object} collection The collection to sample.
16   * @param {number} [n=1] The number of elements to sample.
17   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
18   * @returns {Array} Returns the random elements.
19   * @example
20   *
21   * _.sampleSize([1, 2, 3], 2);
22   * // => [3, 1]
23   *
24   * _.sampleSize([1, 2, 3], 4);
25   * // => [2, 3, 1]
26   */
27  function sampleSize(collection, n, guard) {
28    if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
29      n = 1;
30    } else {
31      n = toInteger(n);
32    }
33    var func = isArray(collection) ? arraySampleSize : baseSampleSize;
34    return func(collection, n);
35  }
36  
37  module.exports = sampleSize;