function getFirstMatches(array, n, expression) {
  var count = 0;

  return array.filter(function(elm) {
    var rest = isDefined(expression) ? (count < n && expression(elm)) : count < n;
    count = rest ? count+1 : count;

    return rest;
  });
}
@description
return the first n element of an array,
if expression provided, is returns as long the expression return truthy
@param array
@param n {number}
@param expression {$parse}
@return array or single object