code: function reject(collection, callback, thisArg) {
        callback = lodash.createCallback(callback, thisArg);
        return filter(collection, function(value, index, collection) {
          return !callback(value, index, collection);
        });
      }
docs: The opposite of `_.filter`, this method returns the elements of a
  `collection` that `callback` does **not** return truthy for.
  
  If a property name is passed for `callback`, the created "_.pluck" style
  callback will return the property value of the given element.
  
  If an object is passed for `callback`, the created "_.where" style callback
  will return `true` for elements that have the properties of the given object,
  else `false`.
  
  @static
  @memberOf _
  @category Collections
  @param {Array|Object|String} collection The collection to iterate over.
  @param {Function|Object|String} [callback=identity] The function called per
  iteration. If a property name or object is passed, it will be used to create
  a "_.pluck" or "_.where" style callback, respectively.
  @param {Mixed} [thisArg] The `this` binding of `callback`.
  @returns {Array} Returns a new array of elements that did **not** pass the
  callback check.
  @example
  
  var odds = _.reject([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; });
  // => [1, 3, 5]
  
  var food = [
  { 'name': 'apple',  'organic': false, 'type': 'fruit' },
  { 'name': 'carrot', 'organic': true,  'type': 'vegetable' }
  ];
  
  // using "_.pluck" callback shorthand
  _.reject(food, 'organic');
  // => [{ 'name': 'apple', 'organic': false, 'type': 'fruit' }]
  
  // using "_.where" callback shorthand
  _.reject(food, { 'type': 'fruit' });
  // => [{ 'name': 'carrot', 'organic': true, 'type': 'vegetable' }]