1 var baseDifference = require('./_baseDifference'),
2 baseFlatten = require('./_baseFlatten'),
3 baseIteratee = require('./_baseIteratee'),
4 isArrayLikeObject = require('./isArrayLikeObject'),
5 last = require('./last'),
6 rest = require('./rest');
9 * This method is like `_.difference` except that it accepts `iteratee` which
10 * is invoked for each element of `array` and `values` to generate the criterion
11 * by which uniqueness is computed. The iteratee is invoked with one argument: (value).
16 * @param {Array} array The array to inspect.
17 * @param {...Array} [values] The values to exclude.
18 * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element.
19 * @returns {Array} Returns the new array of filtered values.
22 * _.differenceBy([3.1, 2.2, 1.3], [4.4, 2.5], Math.floor);
25 * // The `_.property` iteratee shorthand.
26 * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
29 var differenceBy = rest(function(array, values) {
30 var iteratee = last(values);
31 if (isArrayLikeObject(iteratee)) {
34 return isArrayLikeObject(array)
35 ? baseDifference(array, baseFlatten(values, false, true), baseIteratee(iteratee))
39 module.exports = differenceBy;