【问题标题】:How to sort array in descending order [duplicate]如何按降序对数组进行排序[重复]
【发布时间】:2020-03-06 05:04:04
【问题描述】:

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

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

【问题讨论】:

  • 您能否展示cards 的外观以及实际和预期结果的具体示例?谢谢。

标签: arrays ruby sorting


【解决方案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 }

【讨论】:

  • 该死的,这简直是天方夜谭。我总是做完整的|a,b| a b,并交换到 b a 进行反向排序。但是你这样做的方式实际上是干净多了
猜你喜欢
  • 2011-11-16
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 2014-02-16
  • 2020-07-18
  • 2018-05-26
  • 2013-03-06
相关资源
最近更新 更多