summaryrefslogtreecommitdiff
path: root/tools/eslint/node_modules/lodash/sampleSize.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/eslint/node_modules/lodash/sampleSize.js')
-rw-r--r--tools/eslint/node_modules/lodash/sampleSize.js42
1 files changed, 42 insertions, 0 deletions
diff --git a/tools/eslint/node_modules/lodash/sampleSize.js b/tools/eslint/node_modules/lodash/sampleSize.js
new file mode 100644
index 0000000000..47e7b116e3
--- /dev/null
+++ b/tools/eslint/node_modules/lodash/sampleSize.js
@@ -0,0 +1,42 @@
+var baseClamp = require('./_baseClamp'),
+ baseRandom = require('./_baseRandom'),
+ toArray = require('./toArray'),
+ toInteger = require('./toInteger');
+
+/**
+ * Gets `n` random elements at unique keys from `collection` up to the
+ * size of `collection`.
+ *
+ * @static
+ * @memberOf _
+ * @category Collection
+ * @param {Array|Object} collection The collection to sample.
+ * @param {number} [n=0] The number of elements to sample.
+ * @returns {Array} Returns the random elements.
+ * @example
+ *
+ * _.sampleSize([1, 2, 3], 2);
+ * // => [3, 1]
+ *
+ * _.sampleSize([1, 2, 3], 4);
+ * // => [2, 3, 1]
+ */
+function sampleSize(collection, n) {
+ var index = -1,
+ result = toArray(collection),
+ length = result.length,
+ lastIndex = length - 1;
+
+ n = baseClamp(toInteger(n), 0, length);
+ while (++index < n) {
+ var rand = baseRandom(index, lastIndex),
+ value = result[rand];
+
+ result[rand] = result[index];
+ result[index] = value;
+ }
+ result.length = n;
+ return result;
+}
+
+module.exports = sampleSize;