lib/object-get.js
function objectGet (object, expression) {
  if (!(object && expression)) throw new Error('both object and expression args are required')
  return expression.trim().split('.').reduce(function (prev, curr) {
    var arr = curr.match(/(.*?)\[(.*?)\]/)
    if (arr) {
      return prev && prev[arr[1]][arr[2]]
    } else {
      return prev && prev[curr]
    }
  }, object)
}
function objectGet (object, expression) {
  if (!(object && expression)) throw new Error('both object and expression args are required')
  return expression.trim().split('.').reduce(function (prev, curr) {
    var arr = curr.match(/(.*?)\[(.*?)\]/)
    if (arr) {
      return prev && prev[arr[1]][arr[2]]
    } else {
      return prev && prev[curr]
    }
  }, object)
}
function objectGet ( object , expression ) { if ( ! ( object && expression ) ) throw new Error ( 'both object and expression args are required' ) return expression . trim ( ) . split ( '.' ) . reduce ( function ( prev , curr ) { var arr = curr . match ( / (.*?)\[(.*?)\] / ) if ( arr ) { return prev && prev [ arr [ 1 ] ] [ arr [ 2 ] ] } else { return prev && prev [ curr ] } } , object ) }
Returns the value at the given property.

@param {object} - the input object
@param {string} - the property accessor expression.
@returns {*}
@alias module:object-get
@example
> objectGet({ animal: 'cow' }, 'animal')
'cow'

> objectGet({ animal: { mood: 'lazy' } }, 'animal')
{ mood: 'lazy' }

> objectGet({ animal: { mood: 'lazy' } }, 'animal.mood')
'lazy'

> objectGet({ animal: { mood: 'lazy' } }, 'animal.email')
undefined
Returns the value at the given property .