LoginSignup
3
0

More than 5 years have passed since last update.

Rubyでオブジェクトの配列を特定の属性の配列に変換する

Last updated at Posted at 2017-05-29

Rubyでオブジェクトの配列を特定の属性の配列に変換する

主にC#をやっている私はC#とRubyで若干感覚が違いました。

結論から言うとmapを使います。
C#の感覚だとselectを使いそうなのですが、selectだとうまくいきません。

sample.rb
class Person
  attr_accessor :name, :sex

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

people = [Person.new("John", "M"), Person.new("Kid", "F")]

p people
# => [#<Person:0x007f8cf58aacd0 @name="John", @sex="M">, #<Person:0x007f8cf58aac58 @name="Kid", @sex="F">]

p people.map { |person| person.name }
# => ["John", "Kid"]

p people.map { |person| person.sex }
# => ["M", "F"]

p people.select { |person| person.sex }
# peopleがそのまま返されてしまう(Rubyのselectはブロックの戻り値が真になる要素を集めて返すメソッド)
# => [#<Person:0x007f8cf58aacd0 @name="John", @sex="M">, #<Person:0x007f8cf58aac58 @name="Kid", @sex="F">]
3
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0