aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHanna Walter <[email protected]>2021-05-28 12:32:17 -0600
committerHanna Walter <[email protected]>2021-05-28 12:32:17 -0600
commit5280f7bfec0ebe0af4e9e7f611c9b30a7c819867 (patch)
tree0790e0028a7b509c2e20425831df09d4e3962ae1 /lib
parent437f5e00294b5a1bd6772216f77e415ebb3b0943 (diff)
downloadfaker-5280f7bfec0ebe0af4e9e7f611c9b30a7c819867.tar.xz
faker-5280f7bfec0ebe0af4e9e7f611c9b30a7c819867.zip
feat: add uniqueArray helper function
Diffstat (limited to 'lib')
-rw-r--r--lib/helpers.js29
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/helpers.js b/lib/helpers.js
index 68e895e7..4ecdaab3 100644
--- a/lib/helpers.js
+++ b/lib/helpers.js
@@ -216,6 +216,35 @@ var Helpers = function (faker) {
};
/**
+ * takes an array of strings or function that returns a string
+ * and outputs a unique array of strings based on that source
+ * @example uniqueArray(faker.random.word, 50)
+ * @example uniqueArray(faker.definitions.name.first_name, 6)
+ * @example uniqueArray(["Hello", "World", "Goodbye"], 2)
+ * @method faker.helpers.uniqueArray
+ * @param {string[] | function => string} source
+ * @param {number} length
+ * @returns {string[]}
+ */
+ self.uniqueArray = function(source, length) {
+ if (Array.isArray(source)) {
+ const set = new Set(source);
+ const array = Array.from(set);
+ return faker.helpers.shuffle(array).splice(0, length);
+ }
+ const set = new Set();
+ try {
+ if (typeof source === "function") {
+ while (set.size < length) {
+ set.add(source());
+ }
+ }
+ } finally {
+ return Array.from(set);
+ }
+ };
+
+ /**
* mustache
*
* @method faker.helpers.mustache