index.js
function first(arr, cb, thisArg) {
  if (arguments.length === 1) {
    return arr[0];
  }
  if (typeOf(cb) === 'string') {
    return findFirst(arr, isType(cb));
  }
  return findFirst(arr, cb, thisArg);
}
function first(arr, cb, thisArg) {
  if (arguments.length === 1) {
    return arr[0];
  }
  if (typeOf(cb) === 'string') {
    return findFirst(arr, isType(cb));
  }
  return findFirst(arr, cb, thisArg);
}
function first ( arr , cb , thisArg ) { if ( arguments . length === 1 ) { return arr [ 0 ] ; } if ( typeOf ( cb ) === 'string' ) { return findFirst ( arr , isType ( cb ) ) ; } return findFirst ( arr , cb , thisArg ) ; }
Return the first element in `array`, or, if a callback is passed,
return the first value for which the returns true.

```js
var arr = ['a', {a: 'b'}, 1, one, 'b', 2, {c: 'd'}, two, 'c'];

utils.first(arr);
//=> 'a'

utils.first(arr, isType('object'));
//=> {a: 'b'}

utils.first(arr, 'object');
//=> {a: 'b'}
```

@param  {Array} `array`
@return {*}
@api public
Return the first element in array or if a callback is passed return the first value for which the returns true .