【Ruby】条件に一致する要素のみ抜き出し新たな配列を作る。filterとselect


個人メモです。

条件に一致する要素のみ抜き出し新たな配列を作るメソッドに、selectfilterがある。

これはどちらも同じ。rubyの公式ページを見ると、filterメソッドの実例にはselectが使われている。

ruby公式 Array#filter


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の場合は配列が返る)