time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

sampleSize.js (1068B)


      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;