Convert arrays to human-readable lists
const books = [
'Harry Potter',
'Bhagavad Gita',
'The Alchemist',
'Birthday Girl'
const listFormatter1 = new Intl.ListFormat('en', {
style: 'long',
type: 'conjunction'
// Harry Potter, Bhagavad Gita, The Alchemist, and Birthday Girl
const listFormatter2 = new Intl.ListFormat('en-GB', {
style: 'short',
type: 'disjunction'
// Harry Potter, Bhagavad Gita, The Alchemist, or Birthday Girl
The first part is to create the formatter using the Intl.ListFormat method. This method accepts two optional parameters.
  • locales - A string with a BCP 47 language tag, or an array of such strings.
  • options - An object with some or all of the following properties:
    • localeMatcher - The locale matching algorithm to use. Possible values are lookup and best fit; the default is best fit.
    • type - The format of the output message. Possible values are conjunction that stands for “and”-based lists (default, e.g., “A, B, and C”), or disjunction that stands for “or”-based lists (e.g., “A, B, or C”). unitstands for lists of values with units (e.g., “5 pounds, 12 ounces”).
    • style - The length of the formatted message. Possible values are: long(default, e.g., “A, B, and C”); short (e.g., “A, B, C”), or narrow (e.g., “A B C”). When style is short or narrow, unit is the only allowed value for the type option.