使用lodash的数组中最常见的项目

dma*_*max -4 javascript lodash

我正在寻找一些练习的帮助,我必须返回数组中出现次数最多的项目。我知道有关此的其他文章,但是我找不到一个仅在我成功适应后才使用lodash的文章

例如 :

var array = [3, 'a', 'a', 'a', 2, 3, 'a', 3, 'a', 2, 4, 9, 3]

应该返回:a(5次)

我试图用类似的方法._groupBy._countBy_.sortBy但我总是发现自己停留在一些点。谢谢。

Ori*_*ori 5

使用_.countBy()获得元素的对象:计数。使用转换为元组数组_.entries()。用找出最大值_.maxBy(_.last),因为计数值是元组中的第二项。使用提取元组中的元素_.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);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

而且,如果您要从lodash导入特定的方法,并且不想使用链使用,请_.flow()改为:

var { flow, countBy, entries, partialRight, maxBy, head, last } = _;

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);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)