Rubyでオブジェクトの配列を要素で並び替える方法(sort_by)

こんにちは!

今回はRubyでオブジェクトの配列を要素で並び替える方法(sort_by)についてまとめます。

やりたいこと

  • オブジェクトの配列を要素によって並び替えたい

sort_byメソッド

  • sort_byはブロックを受け取り、ブロック内で各オブジェクトの比較する要素を指定する

使用例

class Fruit
  attr_accessor :name, :price

  def initialize(name, price)
    @name = name
    @price = price
  end
end

fruits = [
  Fruit.new("Apple", 400),
  Fruit.new("Banana", 200),
  Fruit.new("Cherry", 300),
]

# priceの昇順で並び替える
sorted_fruites = fruits.sort_by { | fruit | fruit.price }

# priceの降順で並び替える
sorted_fruites_descending = fruits.sort_by { | fruit | -fruit.price }

ポイント

  • 指定する要素は数値や文字列などが可能
  • 降順にするには、ブロック内で要素に-を付ける

おわりに

今回はRubyでオブジェクトの配列を要素で並び替える方法(sort_by)についてまとめました。rubyだけを使っていた時はこのメソッドは使った覚えがありませんが、railsを触っていると必要になりました。

71/100