Foundry Virtual Tabletop - API Documentation - Version 14
    Preparing search index...

    Class Collection<K, V>

    A reusable storage concept which blends the functionality of an Array with the efficient key-based lookup of a Map. This concept is reused throughout Foundry VTT where a collection of uniquely identified elements is required.

    Type Parameters

    • K extends string
    • V

    Hierarchy (View Summary)

    Index

    Accessors

    • get contents(): V[]

      Return an Array of all the entry values in the Collection

      Returns V[]

    Methods

    • Then iterating over a Collection, we should iterate over its values instead of over its entries

      Returns MapIterator<V>

    • Filter the Collection, returning an Array of entries which match a functional condition.

      Parameters

      • condition: (value: V, index: number, collection: Collection<K, V>) => unknown

        The functional condition to test.

      Returns V[]

      An Array of matched values

      let c = new Collection([["a", "AA"], ["b", "AB"], ["c", "CC"]]);
      let hasA = c.filters(entry => entry.slice(0) === "A");
    • Find an entry in the Map using a functional condition.

      Parameters

      • condition: (value: V, index: number, collection: Collection<K, V>) => unknown

        The functional condition to test.

      Returns V | undefined

      The value, if found, otherwise undefined

      let c = new Collection([["a", "A"], ["b", "B"], ["c", "C"]]);
      c.get("a") === c.find(entry => entry === "A"); // true
    • Apply a function to each element of the collection

      Parameters

      • fn: (value: V, index: number) => void

        A function to apply to each element

      Returns void

      Array#forEach

      let c = new Collection([["a", {active: false}], ["b", {active: false}], ["c", {active: false}]]);
      c.forEach(e => e.active = true);
    • Get an element from the Collection by its key.

      Parameters

      • key: string

        The key of the entry to retrieve

      • Optionaloptions: { strict?: boolean } = {}

        Additional options that affect how entries are retrieved

        • Optionalstrict?: boolean

          Throw an Error if the requested key does not exist. Default false.

      Returns V | undefined

      The retrieved entry value, if the key exists, otherwise undefined

      let c = new Collection([["a", "Alfred"], ["b", "Bob"], ["c", "Cynthia"]]);
      c.get("a"); // "Alfred"
      c.get("d"); // undefined
      c.get("d", {strict: true}); // throws Error
    • Get an entry from the Collection by name. Use of this method assumes that the objects stored in the collection have a "name" attribute.

      Parameters

      • name: string

        The name of the entry to retrieve

      • Optionaloptions: { strict?: boolean } = {}

        Additional options that affect how entries are retrieved

        • Optionalstrict?: boolean

          Throw an Error if the requested name does not exist. Default false.

      Returns V | undefined

      The retrieved entry value, if one was found, otherwise undefined

      let c = new Collection([["a", "Alfred"], ["b", "Bob"], ["c", "Cynthia"]]);
      c.getName("Alfred"); // "Alfred"
      c.getName("D"); // undefined
      c.getName("D", {strict: true}); // throws Error
    • Transform each element of the Collection into a new form, returning an Array of transformed values

      Type Parameters

      • U

      Parameters

      • transformer: (element: V, index: number, collection: Collection<K, V>) => U

        A transformation function applied to each entry value.

      Returns U[]

      An Array of transformed values

    • Reduce the Collection by applying an evaluator function and accumulating entries

      Type Parameters

      • U

      Parameters

      • reducer: (accum: U, element: T, index: number, collection: Collection<K, V>) => U

        A reducer function applied to each entry value.

      • initial: U

        An initial value which accumulates with each iteration

      Returns U

      The accumulated result

      let c = new Collection([["a", "A"], ["b", "B"], ["c", "C"]]);
      let letters = c.reduce((s, l) => {
      return s + l;
      }, ""); // "ABC"
    • Test whether a condition is met by some entry in the Collection.

      Parameters

      • condition: (element: T, index: number, set: Collection<K, V>) => boolean

        The functional condition to test.

      Returns boolean

      Was the test condition passed by at least one entry?

    • Convert the Collection to a primitive array of its contents.

      Returns object[]

      An array of contained values