# Deep Get > Get a nested property value.
## Usage ```javascript var deepGet = require( '@stdlib/utils/deep-get' ); ``` #### deepGet( obj, path\[, options] ) Returns a nested property value. ```javascript var obj = { 'a': { 'b': { 'c': 'd' } } }; var val = deepGet( obj, 'a.b.c' ); // returns 'd' ``` For `paths` including `arrays`, specify the numeric index. ```javascript 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`. ```javascript 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. ```javascript 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`. ```javascript var dget = deepGet.factory( 'a/b/c', { 'sep': '/' }); ``` #### dget( obj ) Returns a nested property value. ```javascript var dget = deepGet.factory( 'a.b.c' ); var obj = { 'a': { 'b': { 'c': 'd' } } }; var val = dget( obj ); // returns 'd' ```
## Examples ```javascript 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 ); } ```