every.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. var arrayEvery = require('./_arrayEvery'),
  2. baseEvery = require('./_baseEvery'),
  3. baseIteratee = require('./_baseIteratee'),
  4. isArray = require('./isArray'),
  5. isIterateeCall = require('./_isIterateeCall');
  6. /**
  7. * Checks if `predicate` returns truthy for **all** elements of `collection`.
  8. * Iteration is stopped once `predicate` returns falsey. The predicate is
  9. * invoked with three arguments: (value, index|key, collection).
  10. *
  11. * @static
  12. * @memberOf _
  13. * @since 0.1.0
  14. * @category Collection
  15. * @param {Array|Object} collection The collection to iterate over.
  16. * @param {Array|Function|Object|string} [predicate=_.identity]
  17. * The function invoked per iteration.
  18. * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
  19. * @returns {boolean} Returns `true` if all elements pass the predicate check,
  20. * else `false`.
  21. * @example
  22. *
  23. * _.every([true, 1, null, 'yes'], Boolean);
  24. * // => false
  25. *
  26. * var users = [
  27. * { 'user': 'barney', 'age': 36, 'active': false },
  28. * { 'user': 'fred', 'age': 40, 'active': false }
  29. * ];
  30. *
  31. * // The `_.matches` iteratee shorthand.
  32. * _.every(users, { 'user': 'barney', 'active': false });
  33. * // => false
  34. *
  35. * // The `_.matchesProperty` iteratee shorthand.
  36. * _.every(users, ['active', false]);
  37. * // => true
  38. *
  39. * // The `_.property` iteratee shorthand.
  40. * _.every(users, 'active');
  41. * // => false
  42. */
  43. function every(collection, predicate, guard) {
  44. var func = isArray(collection) ? arrayEvery : baseEvery;
  45. if (guard && isIterateeCall(collection, predicate, guard)) {
  46. predicate = undefined;
  47. }
  48. return func(collection, baseIteratee(predicate, 3));
  49. }
  50. module.exports = every;