clone


{*} → {*}

Parameters

  • valueThe object or array to clone

Returns * A deeply cloned copy of val

Added in v0.1.0

Creates a deep copy of the source that can be used in place of the source object without retaining any references to it. The source object may contain (nested) Arrays and Objects, Numbers, Strings, Booleans and Dates. Functions are assigned by reference rather than copied.

Dispatches to a clone method if present.

Note that if the source object has multiple nodes that share a reference, the returned object will have the same structure, but the references will be pointed to the location within the cloned value.

  1. const objects = [{}, {}, {}];
  2. const objectsClone = R.clone(objects);
  3. objects === objectsClone; //=> false
  4. objects[0] === objectsClone[0]; //=> false

values


{k: v} → [v]

Parameters

  • objThe object to extract values from

Returns Array An array of the values of the object’s own properties.

Added in v0.1.0

Returns a list of all the enumerable own properties of the supplied object. Note that the order of the output array is not guaranteed across different JS platforms.

See also valuesIn, keys, toPairs.

  1. R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3]

eqProps


k → {k: v} → {k: v} → Boolean

Parameters

  • propThe name of the property to compare
  • obj1
  • obj2

Returns Boolean

Added in v0.1.0

Reports whether two objects have the same value, in R.equals terms, for the specified property. Useful as a curried predicate.

  1. const o1 = { a: 1, b: 2, c: 3, d: 4 };
  2. const o2 = { a: 10, b: 20, c: 3, d: 40 };
  3. R.eqProps('a', o1, o2); //=> false
  4. R.eqProps('c', o1, o2); //=> true

keys


{k: v} → [k]

Parameters

  • objThe object to extract properties from

Returns Array An array of the object’s own properties.

Added in v0.1.0

Returns a list containing the names of all the enumerable own properties of the supplied object. Note that the order of the output array is not guaranteed to be consistent across different JS platforms.

See also keysIn, values, toPairs.

  1. R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']

omit


[String] → {String: *} → {String: *}

Parameters

  • namesan array of String property names to omit from the new object
  • objThe object to copy from

Returns Object A new object with properties from names not on it.

Added in v0.1.0

Returns a partial copy of an object omitting the keys specified.

See also pick.

  1. R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3}

pick


[k] → {k: v} → {k: v}

Parameters

  • namesan array of String property names to copy onto a new object
  • objThe object to copy from

Returns Object A new object with only properties from names on it.

Added in v0.1.0

Returns a partial copy of an object containing only the keys specified. If the key does not exist, the property is ignored.

See also omit, props.

  1. R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}
  2. R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1}

pickAll


[k] → {k: v} → {k: v}

Parameters

  • namesan array of String property names to copy onto a new object
  • objThe object to copy from

Returns Object A new object with only properties from names on it.

Added in v0.1.0

Similar to pick except that this one includes a key: undefined pair for properties that don’t exist.

See also pick.

  1. R.pickAll(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}
  2. R.pickAll(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, e: undefined, f: undefined}

project


[k] → [{k: v}] → [{k: v}]

Parameters

  • propsThe property names to project
  • objsThe objects to query

Returns Array An array of objects with just the props properties.

Added in v0.1.0

Reasonable analog to SQL select statement.

See also pluck, props, prop.

  1. const abby = {name: 'Abby', age: 7, hair: 'blond', grade: 2};
  2. const fred = {name: 'Fred', age: 12, hair: 'brown', grade: 7};
  3. const kids = [abby, fred];
  4. R.project(['name', 'grade'], kids); //=> [{name: 'Abby', grade: 2}, {name: 'Fred', grade: 7}]

prop


Idx → {s: a} → a | Undefined

Idx = String | Int | Symbol

Parameters

  • pThe property name or array index
  • objThe object to query

Returns * The value at obj.p.

Added in v0.1.0

Returns a function that when supplied an object returns the indicated property of that object, if it exists.

See also path, props, pluck, project, nth.

  1. R.prop('x', {x: 100}); //=> 100
  2. R.prop('x', {}); //=> undefined
  3. R.prop(0, [100]); //=> 100
  4. R.compose(R.inc, R.prop('x'))({ x: 3 }) //=> 4

props


[k] → {k: v} → [v]

Parameters

  • psThe property names to fetch
  • objThe object to query

Returns Array The corresponding values or partially applied function.

Added in v0.1.0

Acts as multiple prop: array of keys in, array of values out. Preserves order.

See also prop, pluck, project.

  1. R.props(['x', 'y'], {x: 1, y: 2}); //=> [1, 2]
  2. R.props(['c', 'a', 'b'], {b: 2, a: 1}); //=> [undefined, 1, 2]
  3. const fullName = R.compose(R.join(' '), R.props(['first', 'last']));
  4. fullName({last: 'Bullet-Tooth', age: 33, first: 'Tony'}); //=> 'Tony Bullet-Tooth'

where


{String: (* → Boolean)} → {String: *} → Boolean

Parameters

  • spec
  • testObj

Returns Boolean

Added in v0.1.1

Takes a spec object and a test object; returns true if the test satisfies the spec. Each of the spec’s own properties must be a predicate function. Each predicate is applied to the value of the corresponding property of the test object. where returns true if all the predicates return true, false otherwise.

where is well suited to declaratively expressing constraints for other functions such as filter and find.

See also propSatisfies, whereEq.

  1. // pred :: Object -> Boolean
  2. const pred = R.where({
  3. a: R.equals('foo'),
  4. b: R.complement(R.equals('bar')),
  5. x: R.gt(R.__, 10),
  6. y: R.lt(R.__, 20)
  7. });
  8. pred({a: 'foo', b: 'xxx', x: 11, y: 19}); //=> true
  9. pred({a: 'xxx', b: 'xxx', x: 11, y: 19}); //=> false
  10. pred({a: 'foo', b: 'bar', x: 11, y: 19}); //=> false
  11. pred({a: 'foo', b: 'xxx', x: 10, y: 19}); //=> false
  12. pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> false

keysIn


{k: v} → [k]

Parameters

  • objThe object to extract properties from

Returns Array An array of the object’s own and prototype properties.

Added in v0.2.0

Returns a list containing the names of all the properties of the supplied object, including prototype properties. Note that the order of the output array is not guaranteed to be consistent across different JS platforms.

See also keys, valuesIn.

  1. const F = function() { this.x = 'X'; };
  2. F.prototype.y = 'Y';
  3. const f = new F();
  4. R.keysIn(f); //=> ['x', 'y']

path


[Idx] → {a} → a | Undefined

Idx = String | NonNegativeInt

Idx = String | Int | Symbol

Parameters

  • pathThe path to use.
  • objThe object or array to retrieve the nested property from.

Returns * The data at path.

Added in v0.2.0

Retrieves the value at a given path. The nodes of the path can be arbitrary strings or non-negative integers. For anything else, the value is unspecified. Integer paths are meant to index arrays, strings are meant for objects.

See also prop, nth, assocPath, dissocPath.

  1. R.path(['a', 'b'], {a: {b: 2}}); //=> 2
  2. R.path(['a', 'b'], {c: {b: 2}}); //=> undefined
  3. R.path(['a', 'b', 0], {a: {b: [1, 2, 3]}}); //=> 1
  4. R.path(['a', 'b', -2], {a: {b: [1, 2, 3]}}); //=> 2
  5. R.path([2], {'2': 2}); //=> 2
  6. R.path([-2], {'-2': 'a'}); //=> undefined

valuesIn


{k: v} → [v]

Parameters

  • objThe object to extract values from

Returns Array An array of the values of the object’s own and prototype properties.

Added in v0.2.0

Returns a list of all the properties, including prototype properties, of the supplied object. Note that the order of the output array is not guaranteed to be consistent across different JS platforms.

See also values, keysIn.

  1. const F = function() { this.x = 'X'; };
  2. F.prototype.y = 'Y';
  3. const f = new F();
  4. R.valuesIn(f); //=> ['X', 'Y']