# 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 );
}
```