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;
- };
|