我正从数组中检索元素:
- 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.
答案 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)