我想为此使用下划线,但由于一些愚蠢的原因,它让我无法理解:
我有一个数字列表:
39, 39, 10, 1, 3, 4, 5...等
我想返回 3 个最频繁的和 3 个不太频繁的。
我试过使用 _.countBy 但不知何故返回一个对象,这使得很难(?)排序,除非我错过了明显的。
最佳答案
首先这将它们分组而不带参数(只创建新数组,每个数组具有相同的值),然后按结果数组长度对它们进行排序。然后使用前三个和最后三个元素创建两个新的 min 和 max 数组。 .map
用于仅返回第一个元素,而不是由 .groupBy
创建的数组。
编辑 :这是 Benjamin Gruenbaum 对我的原始答案的巧妙编辑。
var arr = [1,1,1,1,1,1,2,3,4,5,6,7,7,8,9,10,9,8,9,8];
var group = _.sortBy(_.groupBy(arr), "length");
var min = _.pluck(group.slice(0, 3),0);
var max = _.pluck(group.slice(-3),0);
console.log(min);
console.log(max);
jsFiddle
关于javascript - 如何优雅地从列表中返回 3 个最频繁和 3 个不太频繁的数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17925487/