配列にはさまざまなメソッドが用意されていますが、rejectメソッドを使用すると条件が一致しない要素のみを取得することができます。
rejectメソッドを使用することで「配列の値を条件によって振り分けたい」場合に便利です。
ここではそんなrejectメソッドについて、以下の内容を解説していきます。
・rejectメソッドとは
・rejectメソッドの使い方(配列)
・rejectメソッドの使い方(ハッシュ)
・rejectメソッドの使い方(範囲オブジェクト)
・selectメソッドの使い方
rejectメソッドについて網羅的に解説していますので、ぜひ参考にしてください!
rejectとは
rejectは配列やハッシュに対して要素の数だけブロックの処理を実行し、条件が偽の要素だけを集めて取得するメソッドです。
rejectメソッドを使えば、for文やif文などを使わずに配列やハッシュの各要素を簡単にチェックすることができます。
・rejectの書き方(配列)
配列オブジェクト.reject {|変数| ブロック}
ブロックの変数には配列の要素が順番に格納されます。
・rejectの書き方(ハッシュ)
ハッシュオブジェクト.reject {|キー, 値| ブロック}
ブロックの変数にはハッシュのキーと値のセットが順番に格納されます。
・rejectの書き方(範囲オブジェクト)
範囲オブジェクト.reject {|変数| ブロック}
配列同様ブロックの変数には要素が順番に格納されます。
rejectの使い方
配列
まずは配列の要素に対してrejectメソッドを使用して、ブロックの条件に一致しない要素を取得してみましょう。
以下のサンプルをご覧ください
# 配列を定義 array = [1, 2, 3, 4, 5, 6, 7, 8] # 2で割り切れない要素を取得 p array.reject {|item| item % 2 == 0}
実行結果:
[1, 3, 5, 7]
このサンプルでは数値が格納された配列に対して、ブロックの処理で2で割り切れない要素のみを取得しています。
このようにrejectメソッドを使用すれば、簡単に要素のチェックを行えることがわかりますね!
Hash(ハッシュ)
次にHash(ハッシュ)でrejectメソッドを使う方法を見ていきましょう。
# ハッシュを定義 fruits = {"apple" => 100, "orange" => 120, "meloln" => 700, "banana" => 80} # 値が100以下の要素を取得 p fruits.reject {|key, value| value > 100}
実行結果:
{"apple"=>100, "banana"=>80}
このサンプルではハッシュの値が100以上かチェックして、結果が偽となる要素のみを取得しています。
範囲オブジェクト
範囲オブジェクトも配列やハッシュ同様に、rejectメソッドによるブロック処理で要素を取得することができます。
# 範囲オブジェクトを指定 range = Range.new(1, 10) # 2で割り切れない要素を取得 p range.reject {|item| item % 2 == 0}
このサンプルでは値が1から10までの範囲オブジェクトを作成し、ブロックの処理で2で割り切れない要素のみを取得しています。
範囲オブジェクトについては、以下の記事で詳しく解説していますので気になる方は参考にしてください!
条件に一致した要素を取得する(select)
rejectメソッドによく似たメソッドとしてselectがあります。
selectメソッドは条件に一致した要素(真の場合)を取得します。
# 配列を定義 array = [1, 2, 3, 4, 5, 6, 7, 8] # 2で割り切れる要素の取得 p array.select {|item| item % 2 == 0}
実行結果:
[2, 4, 6, 8]
このように条件に一致した要素を取得できました。
- selectメソッドはブロックの条件に一致した要素を取得する
- rejectメソッドはブロックの条件に一致しない要素を取得する
と覚えておきましょう。
selectメソッドについては以下の記事で詳しく解説しています。
まとめ
ここでは、ブロックの条件が偽の場合の要素を取得するrejectメソッドについて、以下の内容で解説しました。
- rejectメソッドとは
- rejectメソッドの使い方(配列)
- rejectメソッドの使い方(ハッシュ)
- rejectメソッドの使い方(範囲オブジェクト)
- selectメソッドの使い方
rejectメソッドやselectメソッドは繰り返し文やif文を使って、要素を1つずつチェックする手間が省けますので非常に便利であることがわかりましたね!
もし、rejectメソッドについて忘れてしまったら、この記事を思い出してくださいね!