This is the latest docs version
Quick Links
  • -Overview
  • -Language Features
  • -JS Interop
  • -Build System
Documentation
Language Manual
Reference for all language features
ReScript & React
First class bindings for ReactJS
GenType
Seamless TypeScript integration
Reanalyze
Dead Code & Termination analysis
Exploration
Packages
Explore third party libraries and bindings
Syntax Lookup
Discover all syntax constructs
APIPlaygroundBlogCommunity
  • Playground
  • Blog
  • Twitter
  • GitHub
  • Forum
Core Module
Overview
Core
submodules
  • Array
  • ArrayBuffer
  • AsyncIterator
  • BigInt
  • BigInt64Array
    • Constants
    BigUint64Array
    • Constants
  • Console
  • DataView
  • Date
    • UTC
  • Dict
  • Error
    • URIError
    • TypeError
    • SyntaxError
    • ReferenceError
    • RangeError
    • EvalError
  • Exn
  • Float
    • Constants
    Float32Array
    • Constants
    Float64Array
    • Constants
    Int
    • Constants
    Int16Array
    • Constants
    Int32Array
    • Constants
    Int8Array
    • Constants
  • Internal
  • Intl
    • Segments
    • Segmenter
    • RelativeTimeFormat
    • PluralRules
    • NumberFormat
      • Grouping
    • Locale
    • ListFormat
    • DateTimeFormat
    • Collator
    • Common
  • Iterator
  • JSON
    • Decode
    • Encode
    • Classify
  • List
  • Map
    • t
      t
    • v
      make
    • v
      fromArray
    • v
      fromIterator
    • v
      size
    • v
      clear
    • v
      forEach
    • v
      forEachWithKey
    • v
      get
    • v
      has
    • v
      set
    • v
      delete
    • v
      keys
    • v
      values
    • v
      entries
  • MapperRt
  • Math
    • Int
    • Constants
  • Null
  • Nullable
  • Object
  • Option
  • Ordering
  • Promise
  • Re
    • Result
    RegExp
    • Result
  • Result
  • Set
  • String
  • Symbol
  • Type
    • Classify
  • TypedArray
  • Uint16Array
    • Constants
    Uint32Array
    • Constants
    Uint8Array
    • Constants
    Uint8ClampedArray
    • Constants
  • WeakMap
  • WeakSet
  • API / Core / Map

    Map

    Bindings to the mutable JavaScript Map.

    See Map on MDN.

    t

    RESCRIPT
    type t<'k, 'v> = Js.Map.t<'k, 'v>

    Type representing an instance of Map.

    make

    RESCRIPT
    let make: unit => t<'k, 'v>

    Creates a new, mutable JavaScript Map. A Map can have any values as both keys and values.

    See Map on MDN.

    Examples

    RESCRIPT
    `make()` // You can annotate the type of your map if you want to let myMap: Map.t<string, int> = Map.make() // Or you can let ReScript infer what's in your map let map = Map.make() map->Map.set("lang", "ReScript") // Inferred as Map.t<string, string>

    Alternatives

    A JavaScript Map is mutable. If you're looking for an immutable alternative, check outBelt.Map.

    fromArray

    RESCRIPT
    let fromArray: array<('k, 'v)> => t<'k, 'v>

    Turns an array of key/value pairs into a Map.

    Examples

    RESCRIPT
    type languages = ReScript | JavaScript | TypeScript let languageRank = [(ReScript, 1), (JavaScript, 2), (TypeScript, 3)] let map = Map.fromArray(languageRank) // Map.t<languages, int> switch map->Map.get(ReScript) { | Some(1) => Console.log("Yay, ReScript is #1!") | _ => Console.log("Uh-oh, something is _terribly_ wrong with this program... abort.") }

    fromIterator

    RESCRIPT
    let fromIterator: Core__Iterator.t<('k, 'v)> => t<'k, 'v>

    Turns an iterator in the shape of ('key, 'value) into a Map.

    Examples

    RESCRIPT
    // Let's pretend we have an interator in the correct shape @val external someIterator: Iterator.t<(string, int)> = "someIterator" let map = Map.fromIterator(someIterator) // Map.t<string, int>

    size

    RESCRIPT
    let size: t<'k, 'v> => int

    Returns the size, the number of key/value pairs, of the map.

    Examples

    RESCRIPT
    let map = Map.make() map->Map.set("someKey", "someValue") let size = map->Map.size // 1

    clear

    RESCRIPT
    let clear: t<'k, 'v> => unit

    Clears all entries in the map.

    Examples

    RESCRIPT
    let map = Map.make() map->Map.set("someKey", "someValue") map->Map.size // 1 map->Map.clear map->Map.size // 0

    forEach

    RESCRIPT
    let forEach: (t<'k, 'v>, 'v => unit) => unit

    Iterates through all values of the map.

    Please note that this is without the keys, just the values. If you need the key as well, use Map.forEachWithKey.

    Examples

    RESCRIPT
    let map = Map.make() map->Map.set("someKey", "someValue") map->Map.set("someKey2", "someValue2") map->Map.forEach(value => { Console.log(value) })

    forEachWithKey

    RESCRIPT
    let forEachWithKey: (t<'k, 'v>, ('v, 'k) => unit) => unit

    Iterates through all values of the map, including the key for each value.

    Examples

    RESCRIPT
    let map = Map.make() map->Map.set("someKey", "someValue") map->Map.set("someKey2", "someValue2") map->Map.forEachWithKey((value, key) => { Console.log2(value, key) })

    get

    RESCRIPT
    let get: (t<'k, 'v>, 'k) => option<'v>

    Returns the value for a key, if a value exists at that key.

    Examples

    RESCRIPT
    let map = Map.make() map->Map.set("someKey", "someValue") switch map->Map.get("someKey") { | None => Console.log("Nope, didn't have it.") | Some(value) => Console.log2("Yay, had the value, and it's:", value) }

    has

    RESCRIPT
    let has: (t<'k, 'v>, 'k) => bool

    Checks whether the map has a specific key.

    Examples

    RESCRIPT
    let map = Map.make() map->Map.set("someKey", "someValue") switch map->Map.has("someKey") { | false => Console.log("Nope, didn't have it.") | true => Console.log("Yay, we have the value!") }

    set

    RESCRIPT
    let set: (t<'k, 'v>, 'k, 'v) => unit

    Sets the provided value to the provided key.

    Examples

    RESCRIPT
    let map = Map.make() map->Map.set("someKey", "someValue")

    delete

    RESCRIPT
    let delete: (t<'k, 'v>, 'k) => bool

    Deletes the provided key and its value from the map. Returns a bool for whether the key existed, and was deleted.

    Examples

    RESCRIPT
    let map = Map.make() map->Map.set("someKey", "someValue") let didDeleteKey = map->Map.delete("someKey") Console.log(didDeleteKey) // Logs `true` to the console, becuase the map had the key, so it was successfully deleted let didDeleteKey = map->Map.delete("someNonExistantKey") Console.log(didDeleteKey) // Logs `false` to the console, becuase the key did not exist

    keys

    RESCRIPT
    let keys: t<'k, 'v> => Core__Iterator.t<'k>

    Returns an iterator that holds all keys of the map.

    Examples

    RESCRIPT
    let map = Map.make() map->Map.set("someKey", "someValue") map->Map.set("anotherKey", "anotherValue") let keys = map->Map.keys // Logs the first key Console.log(Iterator.next(keys).value) // You can also turn the iterator into an array. // Remember that an iterator consumes values. We'll need a fresh keys iterator to get an array of all keys, since we consumed a value via `next` above already. Console.log(map->Map.keys->Iterator.toArray)

    values

    RESCRIPT
    let values: t<'k, 'v> => Core__Iterator.t<'v>

    Returns an iterator that holds all values of the map.

    Examples

    RESCRIPT
    let map = Map.make() map->Map.set("someKey", "someValue") map->Map.set("anotherKey", "anotherValue") let values = map->Map.values // Logs the first value Console.log(Iterator.next(values).value) // You can also turn the iterator into an array. // Remember that an iterator consumes values. We'll need a fresh values iterator to get an array of all values, since we consumed a value via `next` above already. Console.log(map->Map.values->Iterator.toArray)

    entries

    RESCRIPT
    let entries: t<'k, 'v> => Core__Iterator.t<('k, 'v)>

    Returns an iterator that holds all entries of the map. An entry is represented as a tuple of ('key, 'value),

    Examples

    RESCRIPT
    let map = Map.make() map->Map.set("someKey", "someValue") map->Map.set("anotherKey", "anotherValue") let entries = map->Map.entries // Logs the first value Console.log(Iterator.next(entries).value) // You can also turn the iterator into an array. // Remember that an iterator consumes entries. We'll need a fresh entries iterator to get an array of all entries, since we consumed a value via `next` above already. Console.log(map->Map.entries->Iterator.toArray)
    Types and values
    • t
      t
    • v
      make
    • v
      fromArray
    • v
      fromIterator
    • v
      size
    • v
      clear
    • v
      forEach
    • v
      forEachWithKey
    • v
      get
    • v
      has
    • v
      set
    • v
      delete
    • v
      keys
    • v
      values
    • v
      entries

    © 2024 The ReScript Project

    Software and assets distribution powered by KeyCDN.

    About
    • Community
    • ReScript Association
    Find us on