我有一个关于函数风格编程的问题。

我使用underscore.js库。

让我们考虑一些用例。我有一个带有重复标签的数组,我需要计算每个标签在数组中的出现次数,并根据出现的次数对其进行排序。

为了计数,我可以使用多少个标签

_.countBy([1, 2, 3, 4, 5], function(num) {
  return num % 2 == 0 ? 'even': 'odd';
});
=> {odd: 3, even: 2}


但是在这里,结果是我有一个哈希,它没有顺序的含义,所以没有排序。因此,在这里,我需要将哈希转换为数组,然后对其进行排序,然后再向后转换为哈希。

我很确定这样做有一种优雅的方法,但是我不知道。
我将不胜感激任何帮助。

最佳答案

对其进行排序并向后转换为哈希。


不,那会再次失去订单。

你可以用

var occurences = _.countBy([1, 2, 3, 4, 5], function(num) {
  return num % 2 == 0 ? 'even': 'odd';
});
// {odd: 3, even: 2}
var order = _.sortBy(_.keys(occurences), function(k){return occurences[k];})
// ["even", "odd"]


也许只是

_.sortBy(_.pairs(occurences), 1)
// [["even", 2], ["odd", 3]]

10-06 04:08
查看更多