使用lodash

时间:2018-04-09 10:54:17

标签: javascript lodash

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

例如:

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

应该返回:a(5次)

我尝试使用._groupBy._countBy_.sortBy等方法,但我总是发现自己陷入了困境。感谢。

1 个答案:

答案 0 :(得分:5)

使用_.countBy()获取元素对象:count。使用_.entries()转换为元组数组。使用_.maxBy(_.last)查找最大值,因为计数值是元组中的第2项。使用_.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>
&#13;
&#13;
&#13;

如果您要从lodash导入特定方法,并且不想使用链式使用_.flow()

&#13;
&#13;
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);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
&#13;
&#13;
&#13;