"Count where" in a collection

Below you can find an easy way to achieve that using the filter method:

var b = _.filter(a, function(o) { if (o.a < 4) return o }).length;

You can use _.countBy:

const count = _.countBy(arr, o => o.a < 4).true


Solution

You can use countBy:

const total = _.countBy(
    array,
    ({ a }) => a < 4 ? 'lessThanFour' : 'greaterThanFour'
  ).lessThanFour

Alternative

Using sumBy:

const total = _.sumBy(
  array,
  ({ a }) => Number(a < 4)
);

And here's the same but with lodash/fp:

const count = _.sumBy(_.flow(_.get('a'), _.lt(4), Number), objects);

Tags:

Lodash