1 var SetCache = require(
'./_SetCache'),
2 arrayIncludes = require(
'./_arrayIncludes'),
3 arrayIncludesWith = require(
'./_arrayIncludesWith'),
4 arrayMap = require(
'./_arrayMap'),
5 baseUnary = require(
'./_baseUnary'),
6 cacheHas = require(
'./_cacheHas');
9 var LARGE_ARRAY_SIZE = 200;
22 function baseDifference(array, values, iteratee, comparator) {
24 includes = arrayIncludes,
26 length = array.length,
28 valuesLength = values.length;
34 values = arrayMap(values, baseUnary(iteratee));
37 includes = arrayIncludesWith;
40 else if (values.length >= LARGE_ARRAY_SIZE) {
43 values =
new SetCache(values);
46 while (++index < length) {
47 var value = array[index],
48 computed = iteratee == null ? value : iteratee(value);
50 value = (comparator || value !== 0) ? value : 0;
51 if (isCommon && computed === computed) {
52 var valuesIndex = valuesLength;
53 while (valuesIndex--) {
54 if (values[valuesIndex] === computed) {
60 else if (!includes(values, computed, comparator)) {
67 module.exports = baseDifference;