Skip to content

Helpers

Module with various helper methods that transform the method input rather than returning values from locales. The transformation process may call methods that use the locale data.

arrayElement

Returns random element from the given array.

Parameters

NameTypeDefaultDescription
<T>

The type of the entries to pick from.

arrayreadonly T[]['a', 'b', 'c']

Array to pick the value from.

Returns: T

ts
faker.helpers.arrayElement<T>(array: readonly T[] = ['a', 'b', 'c']): T
faker.helpers.arrayElement() // => "b"
faker.helpers.arrayElement(['cat', 'dog', 'mouse']) // 'dog'

arrayElements

Returns a subset with random elements of the given array in random order.

Parameters

NameTypeDefaultDescription
<T>

The type of the entries to pick from.

arrayreadonly T[]['a', 'b', 'c']

Array to pick the value from.

count?number

Number of elements to pick. When not provided, random number of elements will be picked. When value exceeds array boundaries, it will be limited to stay inside.

Returns: T[]

ts
faker.helpers.arrayElements<T>(array: readonly T[] = ['a', 'b', 'c'], count?: number): T[]
faker.helpers.arrayElements() // => ["c","b"]
faker.helpers.arrayElements(['cat', 'dog', 'mouse']) // ['mouse', 'cat']
faker.helpers.arrayElements([1, 2, 3, 4, 5], 2) // [4, 2]

fake

Generator for combining faker methods based on a static string input.

Note: We recommend using string template literals instead of fake(), which are faster and strongly typed (if you are using TypeScript), e.g. const address = `${faker.address.zipCode()} ${faker.address.city()}`;

This method is useful if you have to build a random string from a static, non-executable source (e.g. string coming from a user, stored in a database or a file).

It checks the given string for placeholders and replaces them by calling faker methods:

js
const hello = faker.helpers.fake('Hi, my name is {{name.firstName}} {{name.lastName}}!')

This would use the faker.name.firstName() and faker.name.lastName() method to resolve the placeholders respectively.

It is also possible to provide parameters. At first, they will be parsed as json, and if that isn't possible, we will fall back to string:

js
const message = faker.helpers.fake(`You can call me at {{phone.number(+!# !## #### #####!)}}.')

Currently it is not possible to set more than a single parameter.

It is also NOT possible to use any non-faker methods or plain javascript in such templates.

Parameters

NameTypeDefaultDescription
strstring

The template string that will get interpolated. Must not be empty.

Returns: string

ts
faker.helpers.fake(str: string): string
faker.helpers.fake('{{name.lastName}}') // 'Barrows'
faker.helpers.fake('{{name.lastName}}, {{name.firstName}} {{name.suffix}}') // 'Durgan, Noe MD'
faker.helpers.fake('This is static test.') // 'This is static test.'
faker.helpers.fake('Good Morning {{name.firstName}}!') // 'Good Morning Estelle!'
faker.helpers.fake('You can call me at {{phone.number(!## ### #####!)}}.') // 'You can call me at 202 555 973722.'
faker.helpers.fake('I flipped the coin and got: {{helpers.arrayElement(["heads", "tails"])}}') // 'I flipped the coin and got: tails'

maybe

Returns the result of the callback if the probability check was successful, otherwise undefined.

Parameters

NameTypeDefaultDescription
<T>

The type of result of the given callback.

callback() => T

The callback to that will be invoked if the probability check was successful.

options{ ... }{}

The options to use.

options.probability?number0.5

The probability ([0.00, 1.00]) of the callback being invoked.

Returns: T

ts
faker.helpers.maybe<T>(callback: () => T, options: {
  probability: number
} = {}): T
faker.helpers.maybe(() => 'Hello World!') // 'Hello World!'
faker.helpers.maybe(() => 'Hello World!', { probability: 0.1 }) // undefined
faker.helpers.maybe(() => 'Hello World!', { probability: 0.9 }) // 'Hello World!'

mustache

Replaces the {{placeholder}} patterns in the given string mustache style.

Parameters

NameTypeDefaultDescription
strstring

The template string to parse.

dataRecord<string, (substring: string, args: any[]) => string | string>

The data used to populate the placeholders. This is a record where the key is the template placeholder, whereas the value is either a string or a function suitable for String.replace().

Returns: string

ts
faker.helpers.mustache(str: string, data: Record<string, (substring: string, args: any[]) => string | string>): string
faker.helpers.mustache() // => ""
faker.helpers.mustache('I found {{count}} instances of "{{word}}".', {
  count: () => `${faker.datatype.number()}`,
  word: "this word",
}) // 'I found 57591 instances of "this word".'

objectKey

Returns a random key from given object or undefined if no key could be found.

Parameters

NameTypeDefaultDescription
<T>Record<string, unknown>

Missing

objectT

The object to be used.

Returns: keyof T

ts
faker.helpers.objectKey<T>(object: T): keyof T
faker.helpers.objectKey({ myProperty: 'myValue' }) // 'myProperty'

objectValue

Returns a random value from given object or undefined if no key could be found.

Parameters

NameTypeDefaultDescription
<T>Record<string, unknown>

Missing

objectT

The object to be used.

Returns: T[keyof T]

ts
faker.helpers.objectValue<T>(object: T): T[keyof T]
faker.helpers.objectValue({ myProperty: 'myValue' }) // 'myValue'

regexpStyleStringParse

Replaces the regex like expressions in the given string with matching values.

Supported patterns:

  • .{times} => Repeat the character exactly times times.
  • .{min,max} => Repeat the character min to max times.
  • [min-max] => Generate a number between min and max (inclusive).

Parameters

NameTypeDefaultDescription
stringstring''

The template string to to parse.

Returns: string

ts
faker.helpers.regexpStyleStringParse(string: string = ''): string
faker.helpers.regexpStyleStringParse() // => ""
faker.helpers.regexpStyleStringParse() // ''
faker.helpers.regexpStyleStringParse('#{5}') // '#####'
faker.helpers.regexpStyleStringParse('#{2,9}') // '#######'
faker.helpers.regexpStyleStringParse('[500-15000]') // '8375'
faker.helpers.regexpStyleStringParse('#{3}test[1-5]') // '###test3'

repeatString

Repeats the given string the given number of times.

Parameters

NameTypeDefaultDescription
stringstring''

The string to repeat.

numnumber0

The number of times to repeat it.

Returns: string

ts
faker.helpers.repeatString(string: string = '', num: number = 0): string
faker.helpers.repeatString() // => ""
faker.helpers.repeatString('Hello world! ') // ''
faker.helpers.repeatString('Hello world! ', 1) // 'Hello world! '
faker.helpers.repeatString('Hello world! ', 2) // 'Hello world! Hello world! '

replaceCreditCardSymbols

Replaces the symbols and patterns in a credit card schema including Luhn checksum.

This method supports both range patterns [4-9] as well as the patterns used by replaceSymbolWithNumber(). L will be replaced with the appropriate Luhn checksum.

Parameters

NameTypeDefaultDescription
stringstring'6453-####-####-####-###L'

The credit card format pattern.

symbolstring'#'

The symbol to replace with a digit.

Returns: string

ts
faker.helpers.replaceCreditCardSymbols(string: string = '6453-####-####-####-###L', symbol: string = '#'): string
faker.helpers.replaceCreditCardSymbols() // => "6453-5578-6858-4663-4283"
faker.helpers.replaceCreditCardSymbols() // '6453-4876-8626-8995-3771'
faker.helpers.replaceCreditCardSymbols('1234-[4-9]-##!!-L') // '1234-9-5298-2'

replaceSymbolWithNumber

Parses the given string symbol by symbol and replaces the placeholders with digits (0 - 9). ! will be replaced by digits >=2 (2 - 9).

Parameters

NameTypeDefaultDescription
stringstring''

The template string to parse.

symbolstring'#'

The symbol to replace with digits.

Returns: string

ts
faker.helpers.replaceSymbolWithNumber(string: string = '', symbol: string = '#'): string
faker.helpers.replaceSymbolWithNumber() // => ""
faker.helpers.replaceSymbolWithNumber() // ''
faker.helpers.replaceSymbolWithNumber('#####') // '04812'
faker.helpers.replaceSymbolWithNumber('!####') // '27378'
faker.helpers.replaceSymbolWithNumber('Your pin is: !####') // '29841'

replaceSymbols

Parses the given string symbol by symbols and replaces the placeholder appropriately.

  • # will be replaced with a digit (0 - 9).
  • ? will be replaced with an upper letter ('A' - 'Z')
  • and * will be replaced with either a digit or letter.

Parameters

NameTypeDefaultDescription
stringstring''

The template string to parse.

Returns: string

ts
faker.helpers.replaceSymbols(string: string = ''): string
faker.helpers.replaceSymbols() // => ""
faker.helpers.replaceSymbols() // ''
faker.helpers.replaceSymbols('#####') // '98441'
faker.helpers.replaceSymbols('?????') // 'ZYRQQ'
faker.helpers.replaceSymbols('*****') // '4Z3P7'
faker.helpers.replaceSymbols('Your pin is: #?*#?*') // '0T85L1'

shuffle

Takes an array and randomizes it in place then returns it.

Uses the modern version of the Fisher–Yates algorithm.

Parameters

NameTypeDefaultDescription
<T>

The type of the entries to shuffle.

o?T[][]

The array to shuffle.

Returns: T[]

ts
faker.helpers.shuffle<T>(o?: T[] = []): T[]
faker.helpers.shuffle() // => []
faker.helpers.shuffle() // []
faker.helpers.shuffle(['a', 'b', 'c']) // [ 'b', 'c', 'a' ]

slugify

Slugifies the given string. For that all spaces ( ) are replaced by hyphens (-) and most non word characters except for dots and hyphens will be removed.

Parameters

NameTypeDefaultDescription
stringstring''

The input to slugify.

Returns: string

ts
faker.helpers.slugify(string: string = ''): string
faker.helpers.slugify() // => ""
faker.helpers.slugify() // ''
faker.helpers.slugify("Hello world!") // 'Hello-world'

uniqueArray

Takes an array of strings or function that returns a string and outputs a unique array of strings based on that source. This method does not store the unique state between invocations.

Parameters

NameTypeDefaultDescription
<T>

The type of the entries.

source() => T | readonly T[]

The strings to choose from or a function that generates a string.

lengthnumber

The number of elements to generate.

Returns: T[]

ts
faker.helpers.uniqueArray<T>(source: () => T | readonly T[], length: number): T[]
faker.helpers.uniqueArray() // => []
faker.helpers.uniqueArray(faker.random.word, 50)
faker.helpers.uniqueArray(faker.definitions.name.first_name, 6)
faker.helpers.uniqueArray(["Hello", "World", "Goodbye"], 2)

Released under the MIT License.