@crapthings/lodash-count-elements
Version:
count the elements in an array and return result as key, value
25 lines (19 loc) • 520 B
JavaScript
const _ = require('lodash')
module.exports = function(arr = [], opts = {}) {
opts = _.defaults(opts, { order: 'desc' })
let result = _.chain(arr)
.countBy()
.map((value, key) => ({ key, value }))
.orderBy(['value'], [opts.order])
.value()
if (_.isFunction(opts.filter)) {
result = _.filter(result, opts.filter)
}
if (_.isFunction(opts.reject)) {
result = _.reject(result, opts.reject)
}
if (_.isNumber(opts.take)) {
result = _.take(result, opts.take)
}
return result
}