Package Exports
- object-tools
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (object-tools) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
#object-tools Useful functions for working with objects
Todo
- a where function, e.g.
o.where({ a:1, b:0 }, function(key, value){ return value > 0; })
Example
var o = require("object-tools");
- object-tools
- .extend(...object) ⇒
object
- .clone(input) ⇒
object
|array
.omit(object, toOmit) ⇒object
- .every(object, iterator) ⇒
boolean
- .each(object, callback)
- .exists(object, query) ⇒
boolean
- .without(object, toRemove) ⇒
object
- .where(object, query) ⇒
object
- .extract(object, query) ⇒
object
- .extend(...object) ⇒
##o.extend(...object) ⇒ object
Merge a list of objects, left to right, into one.
Param | Type | Description |
---|---|---|
...object | object |
a 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
Param | Type | Description |
---|---|---|
input | object | array |
the 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) ⇒
Deprecated: Replaced by object
o.without
Returns a clone of the input object, minus the specified properties
Param | Type | Description |
---|---|---|
object | object |
the object to clone |
toOmit | Array.<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
Param | Type | Description |
---|---|---|
object | object |
the object to inspect |
iterator | function |
the 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
Param | Type | Description |
---|---|---|
object | object |
the object to iterate |
callback | function |
the 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.
Param | Type | Description |
---|---|---|
object | object |
the object to examine |
query | object |
the 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.
Param | Type | Description |
---|---|---|
object | object |
the input object |
toRemove | string | 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
Param | Type | Description |
---|---|---|
object | object |
The input object |
query | Array.<string> | function |
Either 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(value, key){
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
Param | Type | Description |
---|---|---|
object | object |
The input object |
query | Array.<string> | function |
Either 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(value, key){
return value > 0;
});
{ a: 1, c: 2 }
> object
{ b: 0 }
documented by jsdoc-to-markdown.