You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							53 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							53 lines
						
					
					
						
							1.3 KiB
						
					
					
				var baseIteratee = require('./_baseIteratee'), | 
						|
    basePullAt = require('./_basePullAt'); | 
						|
 | 
						|
/** | 
						|
 * Removes all elements from `array` that `predicate` returns truthy for | 
						|
 * and returns an array of the removed elements. The predicate is invoked | 
						|
 * with three arguments: (value, index, array). | 
						|
 * | 
						|
 * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` | 
						|
 * to pull elements from an array by value. | 
						|
 * | 
						|
 * @static | 
						|
 * @memberOf _ | 
						|
 * @since 2.0.0 | 
						|
 * @category Array | 
						|
 * @param {Array} array The array to modify. | 
						|
 * @param {Function} [predicate=_.identity] The function invoked per iteration. | 
						|
 * @returns {Array} Returns the new array of removed elements. | 
						|
 * @example | 
						|
 * | 
						|
 * var array = [1, 2, 3, 4]; | 
						|
 * var evens = _.remove(array, function(n) { | 
						|
 *   return n % 2 == 0; | 
						|
 * }); | 
						|
 * | 
						|
 * console.log(array); | 
						|
 * // => [1, 3] | 
						|
 * | 
						|
 * console.log(evens); | 
						|
 * // => [2, 4] | 
						|
 */ | 
						|
function remove(array, predicate) { | 
						|
  var result = []; | 
						|
  if (!(array && array.length)) { | 
						|
    return result; | 
						|
  } | 
						|
  var index = -1, | 
						|
      indexes = [], | 
						|
      length = array.length; | 
						|
 | 
						|
  predicate = baseIteratee(predicate, 3); | 
						|
  while (++index < length) { | 
						|
    var value = array[index]; | 
						|
    if (predicate(value, index, array)) { | 
						|
      result.push(value); | 
						|
      indexes.push(index); | 
						|
    } | 
						|
  } | 
						|
  basePullAt(array, indexes); | 
						|
  return result; | 
						|
} | 
						|
 | 
						|
module.exports = remove;
 | 
						|
 |