code: function intersection() {
      var args = [],
          argsIndex = -1,
          argsLength = arguments.length;
  
      while (++argsIndex < argsLength) {
        var value = arguments[argsIndex];
         if (isArray(value) || isArguments(value)) {
           args.push(value);
         }
      }
      var array = args[0],
          index = -1,
          indexOf = getIndexOf(),
          length = array ? array.length : 0,
          result = [];
  
      outer:
      while (++index < length) {
        value = array[index];
        if (indexOf(result, value) < 0) {
          var argsIndex = argsLength;
          while (--argsIndex) {
            if (indexOf(args[argsIndex], value) < 0) {
              continue outer;
            }
          }
          result.push(value);
        }
      }
      return result;
    }
docs: Creates an array of unique values present in all provided arrays using
  strict equality for comparisons, i.e. `===`.
  
  @static
  @memberOf _
  @category Arrays
  @param {...Array} [array] The arrays to inspect.
  @returns {Array} Returns an array of shared values.
  @example
  
  _.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]);
  // => [1, 2]