You cannot 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.1 KiB
JavaScript
53 lines
1.1 KiB
JavaScript
9 years ago
|
var baseIndexOf = require('../internal/baseIndexOf');
|
||
|
|
||
|
/** Used for native method references. */
|
||
|
var arrayProto = Array.prototype;
|
||
|
|
||
|
/** Native method references. */
|
||
|
var splice = arrayProto.splice;
|
||
|
|
||
|
/**
|
||
|
* Removes all provided values from `array` using
|
||
|
* [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
|
||
|
* for equality comparisons.
|
||
|
*
|
||
|
* **Note:** Unlike `_.without`, this method mutates `array`.
|
||
|
*
|
||
|
* @static
|
||
|
* @memberOf _
|
||
|
* @category Array
|
||
|
* @param {Array} array The array to modify.
|
||
|
* @param {...*} [values] The values to remove.
|
||
|
* @returns {Array} Returns `array`.
|
||
|
* @example
|
||
|
*
|
||
|
* var array = [1, 2, 3, 1, 2, 3];
|
||
|
*
|
||
|
* _.pull(array, 2, 3);
|
||
|
* console.log(array);
|
||
|
* // => [1, 1]
|
||
|
*/
|
||
|
function pull() {
|
||
|
var args = arguments,
|
||
|
array = args[0];
|
||
|
|
||
|
if (!(array && array.length)) {
|
||
|
return array;
|
||
|
}
|
||
|
var index = 0,
|
||
|
indexOf = baseIndexOf,
|
||
|
length = args.length;
|
||
|
|
||
|
while (++index < length) {
|
||
|
var fromIndex = 0,
|
||
|
value = args[index];
|
||
|
|
||
|
while ((fromIndex = indexOf(array, value, fromIndex)) > -1) {
|
||
|
splice.call(array, fromIndex, 1);
|
||
|
}
|
||
|
}
|
||
|
return array;
|
||
|
}
|
||
|
|
||
|
module.exports = pull;
|