自己整理&備忘録です。
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 = []
を作らずに書くことができる。
例.配列の頭文字の大文字にしたいときのeach
とmap
の違い
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メソッドを完全攻略!配列操作の基礎を学ぼう