Your new recursive utility belt!
See examples in the API below.
npm install --save rrr
Start using the library by creating a new Rrr
object. The constructor gets one
argument: the object you want to work with.
var Rrr = require('rrr');
var myCollection = { one: { nestOne: 42 }, two: 'item', three: [ true ] };
var rrrCollection = new Rrr(myCollection);
// You can now use all the methods described in the API!
rrrCollection.access('one.nestOne');
// 42
Access a nested property of the object. The path
is a string representing
the property's path. Use the .
character to identify a level (With both
objects and arrays). When value
is defined the value of the item is set. If
no arguments are specified the collection is returned.
var collection = { one: { nestOne: 42 }, two: 'item', three: [ true, false ] };
var my = new Rrr(collection);
my.access();
// { one: { nestOne: 42 }, two: 'item', three: [ true, false ] }
my.access('one.nestOne');
// 42
my.access('one.nestOne', 1337);
// 1337
my.access('one');
// { nestOne: 1337 }
Run a function on each item in the collection. The fn
function passed accepts
two parameters (value, key)
. The first is the value and can't be an other
object. The second is a string that represents the path the the item, use
access
method to get the value. This method does not modify the inner
object.
var collection = { one: { nestOne: 42 }, two: 'item', three: [ true, false ] };
new Rrr(collection).each(function (value, key) {
console.log('%s: %s', key, value);
});
// one.nestOne: 42
// two: 'item'
// three.0: true
// three.1: false
Apply a function on each item in the collection. The fn
function passed
accepts two parameters (value, key)
. The first is the value and can't be an
other object. The second is a string that represents the path the the item,
use access
method to get the value. This method does modify the inner
object. To do so return the new value that you want for your item.
var collection = { one: { nestOne: 42 }, two: 'item', three: [ true, false ] };
var my = new Rrr(collection)
my.map(function (value, key) {
if (typeof value === 'number') {
value++;
return value;
} else {
return value;
}
});
console.log(my)
// one.nestOne: 43
// two: 'item'
// three.0: true
// three.1: false
With ❤️ from quentinrossetti