Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

書籍 Ruby Cookbook | 配列のソート

パンくず

Ruby Cookbook
配列のソート

概要

配列のソート

サンプル

require "pp"

class Person
  attr_accessor:name,:age
  def initialize(name,age)
    @name,@age=name,age
  end
end

person_list = [Person.new("tanaka",23),Person.new("suzuki",30),Person.new("sato",6)]
pp person_list # => arrayに追加した順番のまま
puts "--------------------------------------------"
pp person_list.sort_by {|person|person.name} # => Personのname順
puts "--------------------------------------------"
pp person_list.sort_by {|person|person.age} # => Personのage順
puts "--------------------------------------------"
pp person_list.sort_by {|person|person.age.to_s.reverse.slice!(0,1)} # => Personのage下一桁でソート

出力

[#<Person:0x26b3740 @age=23, @name="tanaka">,
 #<Person:0x26b3668 @age=30, @name="suzuki">,
 #<Person:0x26b3500 @age=6, @name="sato">]
--------------------------------------------
[#<Person:0x26b3500 @age=6, @name="sato">,
 #<Person:0x26b3668 @age=30, @name="suzuki">,
 #<Person:0x26b3740 @age=23, @name="tanaka">]
--------------------------------------------
[#<Person:0x26b3500 @age=6, @name="sato">,
 #<Person:0x26b3740 @age=23, @name="tanaka">,
 #<Person:0x26b3668 @age=30, @name="suzuki">]
--------------------------------------------
[#<Person:0x26b3668 @age=30, @name="suzuki">,
 #<Person:0x26b3740 @age=23, @name="tanaka">,
 #<Person:0x26b3500 @age=6, @name="sato">]