Spearfisher
Spearfisher

Reputation: 8783

Count the number of items in json with conditions

I'd like to count the number of items in an array of JSON items that match some conditions. My array look like this:

array = [{
            name: 'Bob',
            age: 24
           },
          ....,
          {
            name: 'Mary',
            age: 23
           }]

Rather than looping through the whole array I am trying to get an expression as simple an as elegant as my database request:

db.myCollection.find({ age: 23 }).count()

Is there any best practice? I was thinking of using the underscore library but I couldnt find what I am looking for.

Many thanks for your help.

Upvotes: 7

Views: 10974

Answers (2)

Christoph
Christoph

Reputation: 28103

Well, you can do this without any 3rd party library and also without looping:

array.filter(function(value) { return value.age === 23 }).length;

And with ES6 it even becomes more terse

array.filter(value => value.age === 23).length;

Upvotes: 20

megawac
megawac

Reputation: 11383

As I mentioned in op, it seems like you're looking for _.size

_.chain(json)
 .find({age: 23})
 .size()
 .value();

Upvotes: 1

Related Questions