Skip to main content
Module

x/lodash/_basePullAll.js

A modern JavaScript utility library delivering modularity, performance, & extras.
Extremely Popular
Go to Latest
File
import arrayMap from './_arrayMap.js';import baseIndexOf from './_baseIndexOf.js';import baseIndexOfWith from './_baseIndexOfWith.js';import baseUnary from './_baseUnary.js';import copyArray from './_copyArray.js';
/** Used for built-in method references. */var arrayProto = Array.prototype;
/** Built-in value references. */var splice = arrayProto.splice;
/** * The base implementation of `_.pullAllBy` without support for iteratee * shorthands. * * @private * @param {Array} array The array to modify. * @param {Array} values The values to remove. * @param {Function} [iteratee] The iteratee invoked per element. * @param {Function} [comparator] The comparator invoked per element. * @returns {Array} Returns `array`. */function basePullAll(array, values, iteratee, comparator) { var indexOf = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values.length, seen = array;
if (array === values) { values = copyArray(values); } if (iteratee) { seen = arrayMap(array, baseUnary(iteratee)); } while (++index < length) { var fromIndex = 0, value = values[index], computed = iteratee ? iteratee(value) : value;
while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { if (seen !== array) { splice.call(seen, fromIndex, 1); } splice.call(array, fromIndex, 1); } } return array;}
export default basePullAll;