difference.js 987 B

1234567891011121314151617181920212223242526272829
  1. var baseDifference = require('../internal/baseDifference'),
  2. baseFlatten = require('../internal/baseFlatten'),
  3. isArrayLike = require('../internal/isArrayLike'),
  4. isObjectLike = require('../internal/isObjectLike'),
  5. restParam = require('../function/restParam');
  6. /**
  7. * Creates an array of unique `array` values not included in the other
  8. * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
  9. * for equality comparisons.
  10. *
  11. * @static
  12. * @memberOf _
  13. * @category Array
  14. * @param {Array} array The array to inspect.
  15. * @param {...Array} [values] The arrays of values to exclude.
  16. * @returns {Array} Returns the new array of filtered values.
  17. * @example
  18. *
  19. * _.difference([1, 2, 3], [4, 2]);
  20. * // => [1, 3]
  21. */
  22. var difference = restParam(function(array, values) {
  23. return (isObjectLike(array) && isArrayLike(array))
  24. ? baseDifference(array, baseFlatten(values, false, true))
  25. : [];
  26. });
  27. module.exports = difference;