Deep Get
Get a nested property value.
Usage
var deepGet = require( '@stdlib/utils/deep-get' );
deepGet( obj, path[, options] )
Returns a nested property value.
var obj = { 'a': { 'b': { 'c': 'd' } } };
var val = deepGet( obj, 'a.b.c' );
// returns 'd'
For paths
including arrays
, specify the numeric index.
var arr = [
{ 'a': [ {'x': 5} ] },
{ 'a': [ {'x': 10} ] }
];
var val = deepGet( arr, '1.a.0.x' );
// returns 10
The key path
may be specified as either a delimited string
or a key array
.
var obj = { 'a': { 'b': { 'c': 'd' } } };
var val = deepGet( obj, [ 'a', 'b', 'c' ] );
// returns 'd'
The function accepts the following options
:
- sep: key path separator. Default:
'.'
.
By default, the function assumes dot
separated key values. To specify an alternative separator, set the sep
option.
var obj = { 'a': { 'b': { 'c': 'd' } } };
var val = deepGet( obj, 'a/b/c', {
'sep': '/'
});
// returns 'd'
deepGet.factory( path[, options] )
Creates a reusable deep get function. The factory method ensures a deepGet
function is configured identically by using the same set of provided options
.
var dget = deepGet.factory( 'a/b/c', {
'sep': '/'
});
dget( obj )
Returns a nested property value.
var dget = deepGet.factory( 'a.b.c' );
var obj = { 'a': { 'b': { 'c': 'd' } } };
var val = dget( obj );
// returns 'd'
Examples
var randu = require( '@stdlib/random/base/randu' );
var deepGet = require( '@stdlib/utils/deep-get' );
var data;
var keys;
var val;
var i;
data = new Array( 100 );
for ( i = 0; i < data.length; i++ ) {
data[ i ] = {
'x': Date.now(),
'y': [ randu(), randu(), i ]
};
}
keys = [ 0, 'y', 2 ];
for ( i = 0; i < data.length; i++ ) {
keys[ 0 ] = i;
val = deepGet( data, keys );
console.log( val );
}