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.
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.
Share Improve this question edited May 22, 2014 at 9:59 axwcode 7,8247 gold badges32 silver badges41 bronze badges asked Mar 25, 2014 at 21:42 SpearfisherSpearfisher 8,78324 gold badges74 silver badges125 bronze badges 3 |2 Answers
Reset to default 20Well, 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;
As I mentioned in op, it seems like you're looking for _.size
_.chain(json)
.find({age: 23})
.size()
.value();
_.size(..)
– megawac Commented Mar 25, 2014 at 21:49