ruby按字母顺序排序数组,唯一并循环5次

时间:2013-05-15 23:46:24

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 view-helpers

我正从数组中检索元素:

  - member_results.each do |member|
      = member

它返回如下内容:

["John", "Jason", "Andy", "Zee", "Sandy", "Randy", "Grisham"]

我需要按字母顺序对数组进行排序,只从数组中检索前五个唯一元素。有人可以推荐我一个有效的方法为此写一个帮手吗?

编辑: 因此,根据我所做的那样提供的答案:

member_results.map(&:downcase).sort.uniq.take(5)

这解决了我的大部分问题。 但是当我显示这些结果时,我需要将它们恢复为原始格式。

For example the result could be grisHam, aNdy etc.

2 个答案:

答案 0 :(得分:4)

我的冒险将是:

member_results.sort_by(&:downcase).uniq.take(5)

如果对两个数组使用union运算符,则不需要uniq

(a1 | a2).sort.take(5)

答案 1 :(得分:1)

获取已排序的唯一数组:

member_results.sort.uniq

遍历前5个唯一成员:

member_results.sort.uniq[0..4].each do |m|
 ... 
end

或:

member_results.sort.uniq.first(5).each do |m|
 ... 
end

或:

member_results.sort.uniq.take(5).each do |m|
 ... 
end

(result1 | result2).sort.uniq.first(5)