Sha256: 1569f4b536c6c20466a78ad305960c0a057002cf675f7157dad9d40b0e28c643
Contents?: true
Size: 1.18 KB
Versions: 14
Compression:
Stored size: 1.18 KB
Contents
var baseRandom = require('../internal/baseRandom'), isIterateeCall = require('../internal/isIterateeCall'), shuffle = require('./shuffle'), toIterable = require('../internal/toIterable'); /* Native method references for those with the same name as other `lodash` methods. */ var nativeMin = Math.min; /** * Gets a random element or `n` random elements from a collection. * * @static * @memberOf _ * @category Collection * @param {Array|Object|string} collection The collection to sample. * @param {number} [n] The number of elements to sample. * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. * @returns {*} Returns the random sample(s). * @example * * _.sample([1, 2, 3, 4]); * // => 2 * * _.sample([1, 2, 3, 4], 2); * // => [3, 1] */ function sample(collection, n, guard) { if (guard ? isIterateeCall(collection, n, guard) : n == null) { collection = toIterable(collection); var length = collection.length; return length > 0 ? collection[baseRandom(0, length - 1)] : undefined; } var result = shuffle(collection); result.length = nativeMin(n < 0 ? 0 : (+n || 0), result.length); return result; } module.exports = sample;
Version data entries
14 entries across 7 versions & 1 rubygems