code: function difference(array) {
      var index = -1,
          indexOf = getIndexOf(),
          length = array ? array.length : 0,
          seen = concat.apply(arrayRef, nativeSlice.call(arguments, 1)),
          result = [];
  
      var isLarge = length >= largeArraySize && indexOf === basicIndexOf;
  
      if (isLarge) {
        var cache = createCache(seen);
        if (cache) {
          indexOf = cacheIndexOf;
          seen = cache;
        } else {
          isLarge = false;
        }
      }
      while (++index < length) {
        var value = array[index];
        if (indexOf(seen, value) < 0) {
          result.push(value);
        }
      }
      if (isLarge) {
        releaseObject(seen);
      }
      return result;
    }
docs: /*-------------------------------------------------------------------------- 
  Creates an array of `array` elements not present in the other arrays
  using strict equality for comparisons, i.e. `===`.
  
  @static
  @memberOf _
  @category Arrays
  @param {Array} array The array to process.
  @param {Array} [array1, array2, ...] Arrays to check.
  @returns {Array} Returns a new array of `array` elements not present in the
  other arrays.
  @example
  
  _.difference([1, 2, 3, 4, 5], [5, 2, 10]);
  // => [1, 3, 4]