function intersection(array) {
    var result = [];
    if (!array) {
      return result;
    }
    var value,
        argsLength = arguments.length,
        cache = [],
        index = -1,
        length = array.length;

    array: while (++index < length) {
      value = array[index];
      if (indexOf(result, value) < 0) {
        for (var argsIndex = 1; argsIndex < argsLength; argsIndex++) {
          if (!(cache[argsIndex] || (cache[argsIndex] = cachedContains(arguments[argsIndex])))(value)) {
            continue array;
          }
        }
        result.push(value);
      }
    }
    return result;
  }
Computes the intersection of all the passed-in arrays using strict equality
for comparisons, i.e. `===`.

@static
@memberOf _
@category Arrays
@param {Array} [array1, array2, ...] Arrays to process.
@returns {Array} Returns a new array of unique elements, in order, that are
 present in **all** of the arrays.
@example

_.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]);
// => [1, 2]