Rubyにおける配列操作まとめ

参考URL

www.sejuku.net www.sejuku.net

mapメソッド

処理後に戻り値で配列を作成する。 しかし、元の配列が上書きされることはない。元の配列の値を変えたいなら、再代入する必要あり。

array = ["a", "b", "c"]
array.map {|item|  item.upcase }  # 各要素を大文字にする
=>["A", "B", "C"]  # 戻り値は改変された要素の配列

# 実行後のarrayの中身。元の配列はそのまま
["a", "b", "c"]

map!メソッド

元の配列の値を処理結果に置き換えたい場合に使用。map!は元の配列を戻り値に置き換える。

array = ["a", "b", "c"]            # 配列
array.map! {|item|  item.upcase }  # 各要素を大文字にする

# 実行後のarrayの中身。元の配列は戻り値で置き換わっている。
["A", "B", "C"]

selectメソッド

selectメソッドは「条件に合う要素」のみを取得し、配列として返す。

array = [1, 2, 3, 4, 5, 6, 7, 8]
array = array.select {|item| item <= 3 }
=> [1, 2, 3]

count

配列の中で特定の要素の数を数える。引数を指定することで、それがいくつあるかを判断できる。

array1 = [1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5]
array1.count(3) 
=> 3

array2 = ["canada", "india", "india", "iran", "japan"]

array2.count("india") 
=> 2
array2.count("canada")
=> 1
array2.count("vietnum")
=> 0

any?

配列の中の要素が、最低1つでも条件を満たすか調べる。戻り値はboolean型。

array = [1,2,3]
p array.any?{|a| a > 2} # 実行結果 true

all?

すべての要素が条件を満たすか調べる。戻り値はboolean型。

array1 = [1,2,3]
p array.all?{|a| a > 2} # 実行結果 true

array2 = [3, 3, 3]
p array.all?{|a| a > 2} # 実行結果 false