52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | var arrayMap = require('./_arrayMap'), | ||
|  |     baseIndexOf = require('./_baseIndexOf'), | ||
|  |     baseIndexOfWith = require('./_baseIndexOfWith'), | ||
|  |     baseUnary = require('./_baseUnary'), | ||
|  |     copyArray = require('./_copyArray'); | ||
|  | 
 | ||
|  | /** 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; | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = basePullAll; |