mirror of
				https://github.com/taixingyiji/openit.git
				synced 2025-11-04 00:12:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			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;
 |