4

我正在从数组中检索元素:

  - member_results.each do |member|
      = member

它返回如下内容:

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

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

编辑:所以根据 squiguy 提供的答案,这是我所做的:

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

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

For example the result could be grisHam, aNdy etc.
4

2 回答 2

4

我的冒险将是这样的:

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

如果您对两个数组使用联合运算符,则不需要uniq.

(a1 | a2).sort.take(5)
于 2013-05-15T23:52:32.303 回答
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)
于 2013-05-15T23:52:24.533 回答