1

Model.find_by_tag_name("#foo")返回一个数组:

  • 25 条记录tag_name = "#foo"
  • 40 条记录tag_name = "#foobar"
  • 15 条记录tag_name = "#foobarbaz"

我想计算每个唯一tag_name出现的次数,按该计数对结果进行排序,然后消除重复项。结果顺序应该是:

  1. #foobar
  2. #foo
  3. #foobarbaz

目前我正在做这样的事情来获得唯一性和计数:

counter = Hash.new(0)
uniques = results.each{|tag| counter[tag.tag_name] += 1 }.uniq{|tag| tag.tag_name }

以上使counter => {"#foo"=>25, "#foobar"=>40, "#foobarbaz"=>15}.

检索、重复数据删除和计算结果后,我可以采取哪些方法来按出现uniques的次数对生成的唯一标签()数组进行排序?

4

1 回答 1

2
{"#foo"=>25, "#foobar"=>40, "#foobarbaz"=>15}.sort_by { |k, v| -v }.map(&:first)
于 2012-12-01T00:03:39.523 回答