count.js 709 B

12345678910111213141516171819202122232425262728
  1. import _reduce from "./internal/_reduce.js";
  2. import curry from "./curry.js";
  3. /**
  4. * Returns the number of items in a given `list` matching the predicate `f`
  5. *
  6. * @func
  7. * @memberOf R
  8. * @since v0.28.0
  9. * @category List
  10. * @sig (a -> Boolean) -> [a] -> Number
  11. * @param {Function} predicate to match items against
  12. * @return {Array} list of items to count in
  13. * @example
  14. *
  15. * const even = x => x % 2 == 0;
  16. *
  17. * R.count(even, [1, 2, 3, 4, 5]); // => 2
  18. * R.map(R.count(even), [[1, 1, 1], [2, 3, 4, 5], [6]]); // => [0, 2, 1]
  19. */
  20. var count =
  21. /*#__PURE__*/
  22. curry(function (pred, list) {
  23. return _reduce(function (a, e) {
  24. return pred(e) ? a + 1 : a;
  25. }, 0, list);
  26. });
  27. export default count;