Dict
Provide utilities for JS dictionary object.
Note: This module's examples will assume this predeclared dictionary:
RESlet ages = Js.Dict.fromList(list{("Maria", 30), ("Vinh", 22), ("Fred", 49)})
t
REStype t<'a>
Dictionary type (ie an '' JS object). However it is restricted to hold a single type; therefore values must have the same type. This Dictionary type is mostly used with the Js_json.t type.
key
REStype key = string
The type for dictionary keys. This means that dictionaries must use string
s as their keys.
get
RESlet get: (t<'a>, key) => option<'a>
Js.Dict.get(key)
returns None
if the key is not found in the dictionary, Some(value)
otherwise.
RESJs.Dict.get(ages, "Vinh") == Some(22)
Js.Dict.get(ages, "Paul") == None
unsafeGet
RESlet unsafeGet: (t<'a>, key) => 'a
Js.Dict.unsafeGet(key)
returns the value if the key exists, otherwise an undefined
value is returned. Use this only when you are sure the key exists (i.e. when having used the keys()
function to check that the key is valid).
RESJs.Dict.unsafeGet(ages, "Fred") == 49
Js.Dict.unsafeGet(ages, "Paul") // returns undefined
set
RESlet set: (t<'a>, key, 'a) => unit
Js.Dict.set(dict, key, value)
sets the key/value in the dictionary dict
. If the key does not exist, and entry will be created for it. This function modifies the original dictionary.
RESJs.Dict.set(ages, "Maria", 31)
Js.log(ages == Js.Dict.fromList(list{("Maria", 31), ("Vinh", 22), ("Fred", 49)}))
Js.Dict.set(ages, "David", 66)
Js.log(ages == Js.Dict.fromList(list{("Maria", 31), ("Vinh", 22), ("Fred", 49), ("David", 66)}))
keys
RESlet keys: t<'a> => array<string>
Returns all the keys in the dictionary dict
.
RESJs.Dict.keys(ages) == ["Maria", "Vinh", "Fred"]
empty
RESlet empty: unit => t<'a>
Returns an empty dictionary.
unsafeDeleteKey
RESlet unsafeDeleteKey: (. t<string>, string) => unit
Experimental internal function
entries
RESlet entries: t<'a> => array<(key, 'a)>
Returns an array of key/value pairs in the given dictionary (ES2017).
RESJs.Dict.entries(ages) == [("Maria", 30), ("Vinh", 22), ("Fred", 49)]
values
RESlet values: t<'a> => array<'a>
Returns the values in the given dictionary (ES2017).
RESJs.Dict.values(ages) == [30, 22, 49]
fromList
RESlet fromList: list<(key, 'a)> => t<'a>
Creates a new dictionary containing each (key, value) pair in its list argument.
RESlet capitals = Js.Dict.fromList(list{("Japan", "Tokyo"), ("France", "Paris"), ("Egypt", "Cairo")})
fromArray
RESlet fromArray: array<(key, 'a)> => t<'a>
Creates a new dictionary containing each (key, value) pair in its array argument.
RESlet capitals2 = Js.Dict.fromArray([("Germany", "Berlin"), ("Burkina Faso", "Ouagadougou")])
map
RESlet map: ((. 'a) => 'b, t<'a>) => t<'b>
map(f, dict)
maps dict
to a new dictionary with the same keys, using the function f
to map each value.
RESlet prices = Js.Dict.fromList(list{("pen", 1.00), ("book", 5.00), ("stapler", 7.00)})
let discount = (. price) => price *. 0.90
let salePrices = Js.Dict.map(discount, prices)
salePrices == Js.Dict.fromList(list{("pen", 0.90), ("book", 4.50), ("stapler", 6.30)})