UNPKG

motion

Version:

motion - moving development forward

47 lines (44 loc) 1.5 kB
var arrayFilter = require('./internal/arrayFilter'), baseFilter = require('./internal/baseFilter'), baseIteratee = require('./internal/baseIteratee'), isArray = require('./isArray'); /** * The opposite of `_.filter`; this method returns the elements of `collection` * that `predicate` does **not** return truthy for. * * @static * @memberOf _ * @category Collection * @param {Array|Object} collection The collection to iterate over. * @param {Function|Object|string} [predicate=_.identity] The function invoked per iteration. * @returns {Array} Returns the new filtered array. * @example * * var users = [ * { 'user': 'barney', 'age': 36, 'active': false }, * { 'user': 'fred', 'age': 40, 'active': true } * ]; * * _.reject(users, function(o) { return !o.active; }); * // => objects for ['fred'] * * // using the `_.matches` iteratee shorthand * _.reject(users, { 'age': 40, 'active': true }); * // => objects for ['barney'] * * // using the `_.matchesProperty` iteratee shorthand * _.reject(users, ['active', false]); * // => objects for ['fred'] * * // using the `_.property` iteratee shorthand * _.reject(users, 'active'); * // => objects for ['barney'] */ function reject(collection, predicate) { var func = isArray(collection) ? arrayFilter : baseFilter; predicate = baseIteratee(predicate, 3); return func(collection, function(value, index, collection) { return !predicate(value, index, collection); }); } module.exports = reject;