Spaces:
Sleeping
Sleeping
| ; | |
| 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; | |
| }; | |