|                                                                          |  | var SetCache = require('./_SetCache'),    arrayIncludes = require('./_arrayIncludes'),    arrayIncludesWith = require('./_arrayIncludesWith'),    arrayMap = require('./_arrayMap'),    baseUnary = require('./_baseUnary'),    cacheHas = require('./_cacheHas');
/* Built-in method references for those with the same name as other `lodash` methods. */var nativeMin = Math.min;
/** * The base implementation of methods like `_.intersection`, without support * for iteratee shorthands, that accepts an array of arrays to inspect. * * @private * @param {Array} arrays The arrays to inspect. * @param {Function} [iteratee] The iteratee invoked per element. * @param {Function} [comparator] The comparator invoked per element. * @returns {Array} Returns the new array of shared values. */function baseIntersection(arrays, iteratee, comparator) {  var includes = comparator ? arrayIncludesWith : arrayIncludes,      length = arrays[0].length,      othLength = arrays.length,      othIndex = othLength,      caches = Array(othLength),      maxLength = Infinity,      result = [];
  while (othIndex--) {    var array = arrays[othIndex];    if (othIndex && iteratee) {      array = arrayMap(array, baseUnary(iteratee));    }    maxLength = nativeMin(array.length, maxLength);    caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))      ? new SetCache(othIndex && array)      : undefined;  }  array = arrays[0];
  var index = -1,      seen = caches[0];
  outer:  while (++index < length && result.length < maxLength) {    var value = array[index],        computed = iteratee ? iteratee(value) : value;
    value = (comparator || value !== 0) ? value : 0;    if (!(seen          ? cacheHas(seen, computed)          : includes(result, computed, comparator)        )) {      othIndex = othLength;      while (--othIndex) {        var cache = caches[othIndex];        if (!(cache              ? cacheHas(cache, computed)              : includes(arrays[othIndex], computed, comparator))            ) {          continue outer;        }      }      if (seen) {        seen.push(computed);      }      result.push(value);    }  }  return result;}
module.exports = baseIntersection;
 |