Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function baseDifference(array, values, iteratee, comparator) {
- let index = -1;
- let length = array.length;
- let result = [];
- let includes = arrayIncludes;
- let isCommon = true;
- if (!length) {
- return result;
- }
- if (iteratee) {
- values = values.map(iteratee);
- }
- if (comparator) {
- includes = arrayIncludesWith;
- isCommon = false;
- } else if (values.length >= 200) {
- includes = cacheHas;
- isCommon = false;
- values = new SetCache(values);
- }
- outer:
- while (++index < length) {
- let value = array[index];
- let computed = iteratee == null ? value : iteratee(value);
- if (isCommon && computed === computed) {
- let valuesIndex = values.length;
- while (valuesIndex--) {
- if (values[valuesIndex] === computed) {
- continue outer;
- }
- }
- result.push(value);
- } else if (!includes(values, computed, comparator)) {
- result.push(value);
- }
- }
- return result;
- }
Advertisement