rubyの配列の要素を操作するメソッドってたくさんありますよね。
結局、どれがどんな挙動で、どれが一番効率よくかけるかどうか比較するためにまとめてみましたよ。
#配列の操作早見表
メソッド | 戻り値 | 挙動 |
---|---|---|
each | レシーバの配列 | ブロック内で配列の要素をひとつずつ、繰り返し処理 |
each_slice | nil | ブロック内で配列の要素を複数単位で、繰り返し処理 |
each_with_index | レシーバの配列 | ブロック内で配列の要素とインデックス番号をそれぞれ繰り返し処理 |
map | 変化した配列 | 配列のまま、要素を変化させる |
select | 変化した配列 | 配列のまま、条件式がtrueになる要素に絞る |
reject | 変化した配列 | 配列のまま、条件式がfalseになる要素に絞る |
find | 要素 | 要素の中で、最初にヒットした要素を取り出す |
#繰り返し処理
###each
要素を単数でループさせる
array = ["リンゴ", "ミカン", "スイカ", "メロン"]
array.each do |obj|
p obj
end
返り値
リンゴ
ミカン
スイカ
メロン
=> ["リンゴ", "ミカン", "スイカ", "メロン"]
###each_slice
要素を複数で、ループさせる
array.each_slice(2) do |a|
p a
p a
end
返り値
["リンゴ", "ミカン"]
["スイカ", "メロン"]
=> nil
###each_with_index
要素と一緒にインデックスも取り出せる
array.each_with_index do |obj,index|
p obj
p index
end
返り値
"リンゴ"
0
"ミカン"
1
"スイカ"
2
"メロン"
3
=> ["リンゴ", "ミカン", "スイカ", "メロン"]
#要素の中身を直接、変化させる
###map
要素をいじって、配列で返す
array = [1, 2, 3, 4, 5]
array_new = array.map{ |i| i*2 }
返り値
[2, 4, 6, 8, 10]
###select
条件式の戻り値がtrueの要素を、配列で返す
array = [1, 2, 3, 4, 5]
array_new = array.select{ |i| i > 3 }
返り値
[4, 5]
###reject
条件式の戻り値がfalseの要素を、配列で返す
array = [1, 2, 3, 4, 5]
array_new = array.reject{ |i| i % 2 == 0 }
返り値
[1, 3, 5]
###find
条件式にtrueになった最初の要素を検索して取り出す
array = [1, 2, 3, 4, 5]
array_new = array.find{ |i| i > 3 }
返り値
4