HashMapString
Specalized when key type is string, more efficient than the generic type
key
REStype key = string
Type of the Belt.HashMap.String key.
t
REStype t<'b>
Type of the Belt.HashMap.String.
make
let make: (~hintSize: int) => t<'b>
make(~hintSize=10) creates a new hash map by taking the hintSize.
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.set(hMap, "key1", "a")
clear
let clear: t<'b> => unit
Clears a hash table.
RESlet hMap = Belt.HashMap.String.fromArray([("1", "1")])
Belt.HashMap.String.clear(hMap)
Belt.HashMap.String.isEmpty(hMap) == true
isEmpty
let isEmpty: t<'a> => bool
isEmpty(m) checks whether a hash map is empty.
RESlet hMap = Belt.HashMap.String.fromArray([("1", "1")])
Belt.HashMap.String.isEmpty(hMap) == false
set
let set: (t<'a>, key, 'a) => unit
set(tbl, k, v) if k does not exist, add the binding k,v, otherwise, update the old value with the new v.
RESlet hMap = Belt.HashMap.String.fromArray([("2", "2")])
Belt.HashMap.String.set(hMap, "1", "1")
Belt.HashMap.String.valuesToArray(hMap) == ["1", "2"]
copy
let copy: t<'a> => t<'a>
Creates copy of a hash map.
RESlet hMap1 = Belt.HashMap.String.fromArray([("1", "1"), ("2", "2")])
let hMap2 = Belt.HashMap.String.copy(hMap1)
Belt.HashMap.String.set(hMap2, "2", "3")
Belt.HashMap.String.get(hMap1, "2") != Belt.HashMap.String.get(hMap2, "2")
get
let get: (t<'a>, key) => option<'a>
Returns value bound under specific key. If values not exist returns None.
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.set(hMap, "1", "value1")
Belt.HashMap.String.get(hMap, "1") == Some("value1")
Belt.HashMap.String.get(hMap, "2") == None
has
let has: (t<'b>, key) => bool
Checks if x is bound in tbl.
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.set(hMap, "1", "value1")
Belt.HashMap.String.has(hMap, "1") == true
Belt.HashMap.String.has(hMap, "2") == false
remove
let remove: (t<'a>, key) => unit
If bound exists, removes it from the hash map.
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.set(hMap, "1", "value1")
Belt.HashMap.String.remove(hMap, "1")
Belt.HashMap.String.has(hMap, "1") == false
forEachU
let forEachU: (t<'b>, (. key, 'b) => unit) => unit
Same as forEach but takes uncurried functon.
forEach
let forEach: (t<'b>, (key, 'b) => unit) => unit
forEach(tbl, f) applies f to all bindings in table tbl. f receives the key as first argument, and the associated value as second argument. Each binding is presented exactly once to f.
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.set(hMap, "1", "value1")
Belt.HashMap.String.forEach(hMap, (key, value) => Js.log2(key, value))
// prints ("1", "value1")
reduceU
let reduceU: (t<'b>, 'c, (. 'c, key, 'b) => 'c) => 'c
Same as reduce but takes uncurried functon.
reduce
let reduce: (t<'b>, 'c, ('c, key, 'b) => 'c) => 'c
reduce(tbl, init, f) computes (f(kN, dN) ... (f(k1, d1, init))...), where k1 ... kN are the keys of all bindings in tbl, and d1 ... dN are the associated values. Each binding is presented exactly once to f.
The order in which the bindings are passed to f is unspecified. However, if the table contains several bindings for the same key, they are passed to f in reverse order of introduction, that is, the most recent binding is passed first.
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.set(hMap, "1", "value1")
Belt.HashMap.String.set(hMap, "2", "value2")
Belt.HashMap.String.reduce(hMap, "", (acc, key, value) =>
acc ++ (", " ++ value)
) == "value1, value2"
keepMapInPlaceU
let keepMapInPlaceU: (t<'a>, (. key, 'a) => option<'a>) => unit
Same as keepMapInPlace but takes uncurried functon.
keepMapInPlace
let keepMapInPlace: (t<'a>, (key, 'a) => option<'a>) => unit
Filters out values for which function f returned None.
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.set(hMap, "1", "value1")
Belt.HashMap.String.set(hMap, "2", "value2")
Belt.HashMap.String.keepMapInPlace(hMap, (key, value) => key == "1" ? None : Some(value))
size
let size: t<'a> => int
size(tbl) returns the number of bindings in tbl. It takes constant time.
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.set(hMap, "1", "value1")
Belt.HashMap.String.set(hMap, "2", "value2")
Belt.HashMap.String.size(hMap) == 2
toArray
let toArray: t<'a> => array<(key, 'a)>
Returns array of key value pairs.
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.set(hMap, "1", "value1")
Belt.HashMap.String.set(hMap, "2", "value2")
Belt.HashMap.String.toArray(hMap) == [("1", "value1"), ("2", "value2")]
keysToArray
let keysToArray: t<'a> => array<key>
Returns array of keys.
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.set(hMap, "1", "value1")
Belt.HashMap.String.set(hMap, "2", "value2")
Belt.HashMap.String.keysToArray(hMap) == ["1", "2"]
valuesToArray
let valuesToArray: t<'a> => array<'a>
Returns array of values.
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.set(hMap, "1", "value1")
Belt.HashMap.String.set(hMap, "2", "value2")
Belt.HashMap.String.valuesToArray(hMap) == ["value1", "value2"]
fromArray
let fromArray: array<(key, 'a)> => t<'a>
Creates new hash map from array of pairs.
Returns array of values.
RESlet hMap = Belt.HashMap.String.fromArray([("1", "value1"), ("2", "value2")])
Belt.HashMap.String.toArray(hMap) == [("1", "value1"), ("2", "value2")]
mergeMany
let mergeMany: (t<'a>, array<(key, 'a)>) => unit
Merges many key value pairs into hash map.
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.mergeMany(hMap, [("1", "value1"), ("2", "value2")])
getBucketHistogram
let getBucketHistogram: t<'a> => array<int>
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.set(hMap, "1", "1")
Belt.HashMap.String.getBucketHistogram(hMap)
logStats
let logStats: t<'a> => unit
RESlet hMap = Belt.HashMap.String.make(~hintSize=10)
Belt.HashMap.String.set(hMap, "1", "1")
Belt.HashMap.String.logStats(hMap)