node.js - 下划线分组按排序

标签 node.js sorting functional-programming underscore.js

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

我使用underscore.js图书馆。

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

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

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

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

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

最佳答案

sort it and convert backward to hash.

不,那会再次失去订单。

你可以使用

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]]

关于node.js - 下划线分组按排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22690697/

相关文章:

events - 用高级语言进行的松散编程,如何,为什么以及多少?

javascript - lambda : rewriting to point free style

algorithm - 如何以函数式方式使用 Clojure 解决这种编程情况?

javascript - 模块参数的 Node js module.exports

javascript - 在NODE环境下调试Javascript时如何确保只进入我的代码?

javascript - Webpack 环境变量是未知参数

c++ - 无法使用自定义比较器功能对列表进行排序

node.js - 连续帧不能跟随当前操作码

c - 是否有某种方法可以对结构进行排序,同时仅使用指针将其传递到 void 函数中?

ruby-on-rails - 如何在 ruby​​ on rails 中按日期对二维数组(2d 数组)进行排序?