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;
|