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;