如何按降序排列数组

时间:2019-11-10 04:00:24

标签: arrays ruby sorting

我有一种方法可以在下面打印我的卡片。我想创建一种方法,以降序打印卡。我将不得不创建一个新方法。我已经尝试了几件事,但是我在这里。

    def print_cards    
      cards.all.each.with_index(1) do |card, index|
        puts "#{index}. #{card.name}"
      end 
    end 

1 个答案:

答案 0 :(得分:1)

您应该使用Ruby的Enumerable模块的sort_by方法。

基本思想是您提供一个块,该块将枚举中的每个值映射为可用于对集合进行排序的数值。

例如,如果您有一个字符串集合,并且想要按长度对它们进行排序,则可以使用类似这样的方式,其中集合中的每个项目都映射为其大小/长度。第一个示例以升序对数组进行排序,第二个示例以降序对数组进行排序。

my_array = ["a", "aa", "aaaa", "aaa"]

puts my_array.sort_by { |item| item.size }
puts my_array.sort_by { |item| -item.size }