I'm looking for some help about an exercise where I have to return the item with the maximum occurrences in an array. I know there are other posts about this, but I can't find one which uses lodash only that I succeed to adapt.
For example :
var array = [3, 'a', 'a', 'a', 2, 3, 'a', 3, 'a', 2, 4, 9, 3]
Should return : a (5times)
I tried with methods like ._groupBy, ._countBy, _.sortBy but I always find myself stuck at some point. Thanks.
Use _.countBy() to get an object of element:count. Convert to an array of tuples using _.entries(). Find the max with _.maxBy(_.last), since the count value is the 2nd item in the tuple. Extract the element from the tuple using _.head().
var array = [3, 'a', 'a', 'a', 2, 3, 'a', 3, 'a', 2, 4, 9, 3];
var result = _.head(_(array)
  .countBy()
  .entries()
  .maxBy(_.last));
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
And if you are importing specific methods from lodash, and don't want to use a chain use _.flow() instead:
var { countBy, entries, flow, head, last, maxBy, partialRight } = _;
var array = [3, 'a', 'a', 'a', 2, 3, 'a', 3, 'a', 2, 4, 9, 3];
var result = flow(
  countBy,
  entries,
  partialRight(maxBy, last),
  head
)(array);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With