web-dev-qa-db-fra.com

"Count where" dans une collection

En utilisant lodash, quelle serait une bonne façon de compter conditionnellement le nombre d'objets dans une collection? Disons que je voulais compter le nombre d'objets où

a < 4

dans la collection suivante

[{a : 1}, {a : 2}, {a : 3}, {a : 4}, {a : 5}, {a : 6}]
29
swelet

Ci-dessous, vous pouvez trouver un moyen facile d'y parvenir en utilisant la méthode filter :

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

Vous pouvez utiliser sumBy pour cela:

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

Alternativement, vous pouvez l'écrire avec lodash/fp :

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

Une autre solution consiste à utiliser _. CountBy :

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

3
Ahmed Ismail