dist/joiner.node.js
function baseDifference$1(array, values, iteratee, comparator) {
  var index = -1,
      includes = arrayIncludes$2,
      isCommon = true,
      length = array.length,
      result = [],
      valuesLength = values.length;

  if (!length) {
    return result;
  }
  if (iteratee) {
    values = arrayMap$4(values, baseUnary$3(iteratee));
  }
  if (comparator) {
    includes = arrayIncludesWith$2;
    isCommon = false;
  } else if (values.length >= LARGE_ARRAY_SIZE$1) {
    includes = cacheHas$2;
    isCommon = false;
    values = new SetCache$2(values);
  }
  outer: while (++index < length) {
    var value = array[index],
        computed = iteratee == null ? value : iteratee(value);

    value = comparator || value !== 0 ? value : 0;
    if (isCommon && computed === computed) {
      var valuesIndex = valuesLength;
      while (valuesIndex--) {
        if (values[valuesIndex] === computed) {
          continue outer;
        }
      }
      result.push(value);
    } else if (!includes(values, computed, comparator)) {
      result.push(value);
    }
  }
  return result;
}
function baseDifference$1(array, values, iteratee, comparator) {
  var index = -1,
      includes = arrayIncludes$2,
      isCommon = true,
      length = array.length,
      result = [],
      valuesLength = values.length;

  if (!length) {
    return result;
  }
  if (iteratee) {
    values = arrayMap$4(values, baseUnary$3(iteratee));
  }
  if (comparator) {
    includes = arrayIncludesWith$2;
    isCommon = false;
  } else if (values.length >= LARGE_ARRAY_SIZE$1) {
    includes = cacheHas$2;
    isCommon = false;
    values = new SetCache$2(values);
  }
  outer: while (++index < length) {
    var value = array[index],
        computed = iteratee == null ? value : iteratee(value);

    value = comparator || value !== 0 ? value : 0;
    if (isCommon && computed === computed) {
      var valuesIndex = valuesLength;
      while (valuesIndex--) {
        if (values[valuesIndex] === computed) {
          continue outer;
        }
      }
      result.push(value);
    } else if (!includes(values, computed, comparator)) {
      result.push(value);
    }
  }
  return result;
}
function baseDifference$1 ( array , values , iteratee , comparator ) { var index = - 1 , includes = arrayIncludes$2 , isCommon = true , length = array . length , result = [ ] , valuesLength = values . length ; if ( ! length ) { return result ; } if ( iteratee ) { values = arrayMap$4 ( values , baseUnary$3 ( iteratee ) ) ; } if ( comparator ) { includes = arrayIncludesWith$2 ; isCommon = false ; } else if ( values . length >= LARGE_ARRAY_SIZE$1 ) { includes = cacheHas$2 ; isCommon = false ; values = new SetCache$2 ( values ) ; } outer : while ( ++ index < length ) { var value = array [ index ] , computed = iteratee == null ? value : iteratee ( value ) ; value = comparator || value !== 0 ? value : 0 ; if ( isCommon && computed === computed ) { var valuesIndex = valuesLength ; while ( valuesIndex -- ) { if ( values [ valuesIndex ] === computed ) { continue outer ; } } result . push ( value ) ; } else if ( ! includes ( values , computed , comparator ) ) { result . push ( value ) ; } } return result ; }
The base implementation of methods like `_.difference` without support
for excluding multiple arrays or iteratee shorthands.

@private
@param {Array} array The array to inspect.
@param {Array} values The values to exclude.
@param {Function} [iteratee] The iteratee invoked per element.
@param {Function} [comparator] The comparator invoked per element.
@returns {Array} Returns the new array of filtered values.
The base implementation of methods like _ . difference without support for excluding multiple arrays or iteratee shorthands .