我正在寻找一些关于练习的帮助,我必须在数组中返回最多出现的项目。我知道还有其他关于此的帖子,但我找不到仅使用 lodash 的帖子,我才能成功适应。
例如:
var array = [3, 'a', 'a', 'a', 2, 3, 'a', 3, 'a', 2, 4, 9, 3]
应该返回:a(5次)
我尝试使用._groupBy
,._countBy
,_.sortBy
等方法,但我总是发现自己陷入了困境。感谢。
答案 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;
如果您要从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);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
&#13;