| 1234567891011121314151617181920212223242526272829303132333435363738394041 | 
							- 'use strict';
 
- const internals = {};
 
- module.exports = function (array1, array2, options = {}) {
 
-     if (!array1 ||
 
-         !array2) {
 
-         return (options.first ? null : []);
 
-     }
 
-     const common = [];
 
-     const hash = (Array.isArray(array1) ? new Set(array1) : array1);
 
-     const found = new Set();
 
-     for (const value of array2) {
 
-         if (internals.has(hash, value) &&
 
-             !found.has(value)) {
 
-             if (options.first) {
 
-                 return value;
 
-             }
 
-             common.push(value);
 
-             found.add(value);
 
-         }
 
-     }
 
-     return (options.first ? null : common);
 
- };
 
- internals.has = function (ref, key) {
 
-     if (typeof ref.has === 'function') {
 
-         return ref.has(key);
 
-     }
 
-     return ref[key] !== undefined;
 
- };
 
 
  |