1 var baseIndexOf = require('../internal/baseIndexOf');
3 /** Used for native method references. */
4 var arrayProto = Array.prototype;
6 /** Native method references. */
7 var splice = arrayProto.splice;
10 * Removes all provided values from `array` using `SameValueZero` for equality
14 * - Unlike `_.without`, this method mutates `array`
15 * - [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
16 * comparisons are like strict equality comparisons, e.g. `===`, except
17 * that `NaN` matches `NaN`
22 * @param {Array} array The array to modify.
23 * @param {...*} [values] The values to remove.
24 * @returns {Array} Returns `array`.
27 * var array = [1, 2, 3, 1, 2, 3];
29 * _.pull(array, 2, 3);
37 if (!(array && array.length)) {
41 indexOf = baseIndexOf,
44 while (++index < length) {
48 while ((fromIndex = indexOf(array, value, fromIndex)) > -1) {
49 splice.call(array, fromIndex, 1);
55 module.exports = pull;