Rubyには配列の評価を行い、要素が真になったら結果を返すfindメソッドがあります。
「ハッシュの要素を検索する方法についても知りたい」
そんな方に向けて、この記事では配列の要素を調べるfindメソッドについて、以下の内容を解説していきます。
【基礎】findメソッドの使い方
【発展】ハッシュの要素を検索する
【発展】真偽判定を行いたい場合(any?)
findメソッドは配列の評価を行うときに便利なメソッドですので、使い方はよく理解しておきましょう。
findメソッドとは
findメソッドは、ブロックで指定した条件に一致した要素を取り出したいときに使用します。
書き方:
オブジェクト.find{ |要素| ブロック処理}
ブロックの要素を1つずつ格納しながら、要素ごとにブロックの処理を繰り返して、ブロックの処理が真ならその要素を返して処理を終了します。
ブロックの結果が全て偽の場合はnilを返します。
findメソッドの使い方
ここでは、実際にfindメソッドの使い方を見ていきましょう。
以下のサンプルでは、3で割り切れる値が存在するか確認しています。
サンプルプログラム:
array = [10, 20, 30, 40, 50] puts array.find {|item| item % 3 == 0 }
実行結果:
30
配列の要素の中で3で割り切れるのは30なので、30を返しましたね!
以下のサンプルでは、配列の要素から一致する文字列が存在するか?確認しています。
サンプルプログラム:
fruits = ["apple", "orange", "melon", "banana", "pineapple"] puts fruits.find {|item| item == "banana" }
実行結果:
banana
ハッシュの要素を検索する
findメソッドはハッシュで使用することもできます。
以下のサンプルでは要素の値が500以上の要素を検索しています。
サンプルプログラム:
fruits = { "apple" => 100, "orange" => 80, "melon" => 700, "banana" => 150, "pineapple" => 450 } p fruits.find {|k, v| v >= 500 }
実行結果:
["melon", 700]
以下の例では値が100以上でキーがbananaの要素を検索しています。
サンプルプログラム:
fruits = { "apple" => 100, "orange" => 80, "melon" => 700, "banana" => 150, "pineapple" => 450 } p fruits.find {|k, v| v >= 100 and k == "banana" }
実行結果:
["banana", 150]
真偽判定を行いたい場合(any?)
findメソッドとよく似たメソッドとしてany?メソッドがあります。
any?メソッドは配列の要素をブロックで評価して、ブロックに記述された条件が真になった場合はtrueを返します。
サンプルプログラム
array = [10, 20, 30, 40, 50] puts array.any? {|item| item % 3 == 0 }
このように条件に一致したらtrueを返します。
any?メソッドについては、以下の記事でも詳しく解説していますので参考にしてくださいね!
まとめ
ここでは条件に一致した要素を検索するためのfindメソッドについて解説しました。
- findメソッドとは
- findメソッドの使い方
- ハッシュの要素を検索する
- 真偽判定を行いたい場合(any?)
findメソッドを使用すれば、配列やハッシュなどの要素を使用する前に事前に配列の評価を行うことができるので、使い方についてはよく理解しておきましょう。
もし、findメソッドの使い方を忘れてしまったら、この記事を思い出してくださいね。