object-tools

Useful functions for working with objects

#object-tools Useful functions for working with objects

Todo

  • [x] a where function, e.g. o.where({ a:1, b:0 }, function(key, value){ return value > 0; })

Example

var o = require("object-tools");

##o.extend(...object) ⇒ object Merge a list of objects, left to right, into one.

ParamTypeDescription
...objectobjecta sequence of object instances to be extended

Example

> o.extend({ one: 1, three: 3 }, { one: "one", two: 2 }, { four: 4 });
{ one: 'one',
  three: 3,
  two: 2,
  four: 4 }

##o.clone(input) ⇒ object | array Clones an object or array

ParamTypeDescription
inputobject | arraythe input to clone

Example

> date = new Date()
Fri May 09 2014 13:54:34 GMT+0200 (CEST)
> o.clone(date)
{}  // a Date instance doesn't own any properties 
> date.clive = "hater"
'hater'
> o.clone(date)
{ clive: 'hater' }
> array = [1,2,3]
[ 1, 2, 3 ]
> newArray = o.clone(array)
[ 1, 2, 3 ]
> array === newArray
false

##o.omit(object, toOmit) ⇒ object Deprecated: Replaced by o.without

Returns a clone of the input object, minus the specified properties

ParamTypeDescription
objectobjectthe object to clone
toOmitArray.<string>an array of property names to omit from the clone

Example

> o.omit({ one: 1, two: 2, three: 3, four: 4 }, [ "two", "four" ]);
{ one: 1, three: 3 }

##o.every(object, iterator) ⇒ boolean Returns true if the supplied iterator function returns true for every property in the object

ParamTypeDescription
objectobjectthe object to inspect
iteratorfunctionthe iterator function to run against each key/value pair, the args are (value, key).

Example

> function aboveTen(input){ return input > 10; }
undefined
> o.every({ eggs: 12, carrots: 30, peas: 100 }, aboveTen)
true
> o.every({ eggs: 6, carrots: 30, peas: 100 }, aboveTen)
false

##o.each(object, callback) Runs the iterator function against every key/value pair in the input object

ParamTypeDescription
objectobjectthe object to iterate
callbackfunctionthe iterator function to run against each key/value pair, the args are (value, key).

Example

> var total = 0;
undefined
> function addToTotal(n){ total += n; }
undefined
> o.each({ eggs: 3, celery: 2, carrots: 1 }, addToTotal)
undefined
> total
6

##o.exists(object, query) ⇒ boolean returns true if the key/value pairs in query also exist identically in object. Also supports RegExp values in query. If the query property begins with ! then test is negated.

ParamTypeDescription
objectobjectthe object to examine
queryobjectthe key/value pairs to look for

Example

> o.exists({ a: 1, b: 2}, {a: 0})
false
> o.exists({ a: 1, b: 2}, {a: 1})
true
> o.exists({ a: 1, b: 2}, {"!a": 1})
false
> o.exists({ name: "clive hater" }, { name: /clive/ })
true
> o.exists({ name: "clive hater" }, { "!name": /ian/ })
true

##o.without(object, toRemove) ⇒ object returns a clone of the object minus the specified properties.

ParamTypeDescription
objectobjectthe input object
toRemovestring | Array.<string>a single property, or array of properties to omit

Example

> o.without({ a: 1, b: 2, c: 3}, "b")
{ a: 1, c: 3 }
> o.without({ a: 1, b: 2, c: 3}, ["b", "a"])
{ c: 3 }

##o.where(object, query) ⇒ object Returns a new object containing the key/value pairs which satisfy the query

ParamTypeDescription
objectobjectThe input object
queryArray.<string> | functionEither an array of property names, or a function. The function is called with (value, key) and must return true to be included in the output.

Since: 1.2.0
Example

> object = { a: 1, b: 0, c: 2 }
{ a: 1, b: 0, c: 2 }
> o.where(object, function(valuekey){
      return value > 0;
  });
{ a: 1, c: 2 }
> o.where(object, [ "b" ]);
{ b: 0 }
> object
{ a: 1, b: 0, c: 2 }

##o.extract(object, query) ⇒ object identical to o.where(object, query) with one exception - the found properties are removed from the input object

ParamTypeDescription
objectobjectThe input object
queryArray.<string> | functionEither an array of property names, or a function. The function is called with (value, key) and must return true to be included in the output.

Since: 1.2.0
Example

> object = { a: 1, b: 0, c: 2 }
{ a: 1, b: 0, c: 2 }
> o.where(object, function(valuekey){
      return value > 0;
  });
{ a: 1, c: 2 }
> object
{ b: 0 }

documented by jsdoc-to-markdown.