| title | category | layout | updated | intro |
|---|---|---|---|---|
101 |
JavaScript libraries |
2017/sheet |
2017-09-21 |
[101](https://www.npmjs.com/package/101) is a JavaScript library for dealing with immutable data in a functional manner.
|
const isObject = require('101/isObject')
isObject({}) // → trueEvery function is exposed as a module.
See: 101
isObject({})
isString('str')
isRegExp(/regexp/)
isBoolean(true)
isEmpty({})
isfunction(x => x)
isInteger(10)
isNumber(10.1)
instanceOf(obj, 'string'){: .-three-column}
{: .-prime}
let obj = {}obj = put(obj, 'user.name', 'John')
// → { user: { name: 'John' } }pluck(name, 'user.name')
// → 'John'obj = del(obj, 'user')
// → { }pluck(state, 'user.profile.name')pick(state, ['user', 'ui'])
pick(state, /^_/)pluck returns values, pick returns subsets of objects.
put(state, 'user.profile.name', 'john')See: put
del(state, 'user.profile')
omit(state, ['user', 'data'])omit is like del, but supports multiple keys to be deleted.
hasKeypaths(state, ['user'])
hasKeypaths(state, { 'user.profile.name': 'john' })See: hasKeypaths
values(state)| and(x, y) | x && y |
| or(x, y) | x || y |
| xor(x, y) | !(!x && !y) && !(x && y) |
| equals(x, y) | x === y |
| exists(x) | !!x |
| not(x) | !x |
Useful for function composition.
compose(f, g) // x => f(g(x))
curry(f) // x => y => f(x, y)
flip(f) // f(x, y) --> f(y, x)passAll(f, g) // x => f(x) && g(x)
passAny(f, g) // x => f(x) || g(x)converge(and, [pluck('a'), pluck('b')])(x)// → and(pluck(x, 'a'), pluck(x, 'b'))See: converge
find(list, x => x.y === 2)
findIndex(list, x => ...)
includes(list, 'item')
last(list)find(list, hasProps('id'))groupBy(list, 'id')
indexBy(list, 'id')isFloat = passAll(isNumber, compose(isInteger, not))
// n => isNumber(n) && not(isInteger(n))function doStuff (object, options) { ... }
doStuffForce = curry(flip(doStuff))({ force: true })