LoginSignup
1
2

More than 3 years have passed since last update.

【Ruby】mapメソッドのつかいかた(+別メソッドとの組み合わせの例など)

Posted at

自己整理&備忘録です。

mapメソッドとは

mapメソッドとは、「配列の要素それぞれに対して一定の処理を行って、新しい配列をつくるメソッド」とされる。

 
基本的な型

配列.map { |変数| 実行させたい処理 }

名称は異なるがcollectメソッドもmapと同じ動きをする。

つかいかた(例)

1. 数式

sample_1.rb

x = [0, 100, 500]
y = x.map { |x| x * 2 }
p y

#=> [0, 200, 1000]

2.mapの要素にメソッドを与える(よく見る形)

基本の型

オブジェクト名.map(&:メソッド名)


sports = ["BASEBALL", "SOCCER"]
p sports.map(&:downcase) 

#=> ["baseball", "soccer"]

mapとmap!の違い

map  → 元の値に対して影響を与えない
map! → 元の値を書き換える

fruits = ["apple", "banana", "orange"]
p fruits
p fruits.map(&:upcase)
p fruits
p fruits.map!(&:capitalize)
p fruits

# 出力結果(4つ目のmap!後に元のfruitsを出力すると上書きされている)
["apple", "banana", "orange"]
["APPLE", "BANANA", "ORANGE"]  
["apple", "banana", "orange"]
["Apple", "Banana", "Orange"]
["Apple", "Banana", "Orange"] 

eachメソッドとの違い

新しい配列を作るので、空の配列array = []を作らずに書くことができる。

例.配列の頭文字の大文字にしたいときのeachmapの違い

rei.rb

fruits = ["apple", "banana", "orange"]

出力結果(理想形)

["Apple", "Banana", "Orange"]

 
eachのとき

each_ver.rb

fruits = ["apple", "banana", "orange"]
fruits_ini = []
fruits.each do |frt|
  fruits_ini << frt.capitalize
end
p fruits_ini

#=> ["Apple", "Banana", "Orange"]

 
mapのとき

map_ver.rb

fruits = ["apple", "banana", "orange"]
p fruits.map(&:capitalize)
#=> ["Apple", "Banana", "Orange"]

参考

Rubyのmap, map!メソッドの使い方
Ruby mapメソッドについて
【Rails入門】mapメソッドを完全攻略!配列操作の基礎を学ぼう

1
2
0

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
1
2