Rubyで配列の条件を満たす要素を列挙するor取り除く(select, reject, partition)

Arrayの以下のメソッドについてまとめてみた.

  1. select (select!)
  2. reject (reject!)
  3. partition

select : 条件を満たす要素を列挙

条件を満たす要素を列挙するにはselectを使う.selectはブロックの評価結果がtrueとなる要素からなる配列を返す.非破壊的.

a = [1, 3, 4, 7, 9, 13]
a.select{|e| e % 3 == 0} #=> [3, 9]

破壊的メソッドあり.ただしRuby 1.9.2以降が必要.

a.select!{|e| e % 3 == 0}

reject : 条件を満たす要素を削除

条件を満たす要素を取り除くにはrejectを使う.rejectはブロックの評価結果がtrueとなる要素を除いた配列を返す.非破壊的.

a = [1, 3, 4, 7, 9, 13]
a.reject{|e| e % 3 == 0} #=> [1, 4, 7, 13]

破壊的メソッドあり.こちらはRuby 1.9.2以前からある.

a.reject!{|e| e % 3 == 0}

partition : 条件を満たす要素と満たさない要素に分ける

partitionはブロックの評価結果がtrueとなる要素とfalseとなる要素に分けた配列をまとめて返す.非破壊的.

a = [1, 3, 4, 7, 9, 13]
a.partition{|e| e % 3 == 0} #=> [[3, 9], [1, 4, 7, 13]]

selectとrejectの両方を呼び出すよりも楽.

破壊的メソッドはない.