code: function baseDifference(array, values) {
        var length = array ? array.length : 0;
        if (!length) {
          return [];
        }
        var index = -1,
            indexOf = getIndexOf(),
            prereq = indexOf === baseIndexOf,
            isLarge = prereq && createCache && values && values.length >= 200,
            isCommon = prereq && !isLarge,
            result = [],
            valuesLength = values ? values.length : 0;
  
        if (isLarge) {
          indexOf = cacheIndexOf;
          values = createCache(values);
        }
        outer:
        while (++index < length) {
          var value = array[index];
  
          if (isCommon) {
            var valuesIndex = valuesLength;
            while (valuesIndex--) {
              if (values[valuesIndex] === value) {
                continue outer;
              }
            }
            result.push(value);
          }
          else if (indexOf(values, value) < 0) {
            result.push(value);
          }
        }
        return result;
      }
docs: The base implementation of `_.difference` that accepts a single array
  of values to exclude.
  
  @private
  @param {Array} array The array to process.
  @param {Array} [values] The array of values to exclude.
  @returns {Array} Returns the new array of filtered values.