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