Lodash count() mixin

A mixin that efficiently counts collection items.

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.0/lodash.js"></script>

JavaScript

const obj = [
	{name: 'andres'},
  {name: 'andres'},
  {name: 'andres'},
  {name: 'jose'},
];

console.log(_.count(obj));

_.mixin({
    count: function(collection, predicate) {
        if (!predicate) {
            return collection.length;   
        }
        
        var callback = _.callback(predicate);

        return _.reduce(collection, function(result, item) {
            return callback(item) ? result + 1 : result;
        }, 0); 
    }
}, { chain: false });

var collection = [ 1, 2, 3 ];

console.clear();

console.log('no filter', _.count(collection));

console.log('greater than 1', _.count(collection, function(item) {
    return item > 1;
}));

console.log('less than 3', _.count(collection, function(item) {
    return item < 3;
}));

collection = [
    { enabled: true },
    { enabled: false },
    { enabled: true },
    { enabled: false }
];

console.log('matches property', _.count(collection, 'enabled'));

console.log('matches', _.count(collection, { enabled: false }));