imtbl
v1.0.1
Published
Immutable operations for JavaScript data structures
Downloads
10
Readme
██╗███╗ ███╗████████╗██████╗ ██╗
██║████╗ ████║╚══██╔══╝██╔══██╗██║
██║██╔████╔██║ ██║ ██████╔╝██║
██║██║╚██╔╝██║ ██║ ██╔══██╗██║
██║██║ ╚═╝ ██║ ██║ ██████╔╝███████╗
╚═╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
Immutable operations for JavaScript data structures
Shamelessly copied from Clojure’s core library
Why?
Because { ...obj, [key]: { ...obj[key], [key1]: f(obj[key][key1]) }}
is stupid and sometimes you don't want Immutable.js in your code.
Random benchmark results
updateId 0.7 ms/op 1356 op/s
manual Object.assign 0.6 ms/op 1686 op/s
Installation
npm i imtbl
API
See more usage examples in tests
get(coll, k, notFound)
Returns the value mapped tok
,notFound
orundefined
ifk
not present.getIn(coll, ks, notFound)
Returns the value in a nested array or object, whereks
is an array of keys. Returnsundefined
if the key is not present, or thenotFound
value if supplied.assoc(coll, k, v, ...)
When applied to an object, returns a new object that contains the mapping of key(s) to val(s). When applied to an array, returns a new array that contains val at index.assocIn(coll, ks, v)
Associates a value in a nested array or object, whereks
is a sequence of keys andv
is the new value and returns a new nested structure. If any levels do not exist, objects will be created.dissoc(coll, k, ...)
Returns a new object, that does not contain a mapping for key(s).conj(coll, v, ...)
Returns a new array or object with values 'added'.update(coll, k, f, ...args)
'Updates' a value in an array or an object, wherek
is a key andf
is a function that will take the old value and any suppliedargs
and return the new value, and returns a new array or object. If the key does not exist,undefined
is passed as the old value.updateIn(coll, ks, f, ...args)
'Updates' a value in a nested array or object, whereks
is an array of keys andf
is a function that will take the old value and any suppliedargs
and return the new value, and returns a new nested array or object. If any levels do not exist, objects will be created.