個人メモです。
条件に一致する要素のみ抜き出し新たな配列を作るメソッドに、select
とfilter
がある。
これはどちらも同じ。rubyの公式ページを見ると、filterメソッドの実例にはselectが使われている。
##rangeオブジェクト 1~3までのrangeオブジェクトに対して、2以下に該当する数値のみを抜き出し配列を作成する。
select
range = 1..3 #[1,2,3]
range2 = range.select{|x| x<=2}
p range2
#出力
[1, 2]
filter
range = 1..3 #[1,2,3]
range2 = range.filter{|x| x<=2}
p range2
#出力
[1, 2]
filterもselectも結果は同じ。
##配列
select
arr = [1,2,3]
arr2 = arr.select{|x| x<=2}
p arr2
#出力
[1, 2]
##オブジェクト オブジェクトの場合、変数を2つ設定する。 1つ目の変数がキー、2つ目の変数が値となる。
※変数が1つのみの場合はKVのpairが入る。
obj = {:a=>1, :b=>2, :c=>3}
obj2 = obj.select{|x, y| y<=2}
p obj2
#出力
{:a=>1, :b=>2}
mapメソッドと異なり、処理結果はオブジェクトで返る。(mapの場合は配列が返る)