Ruby on Rails

【Rails】findメソッドで連想配列から指定した値を検索する

目次

  1. findメソッドとは
  2. 基本的な使い方
  3. selectとの違い
  4. 連想配列に対して使う
  5. まとめ

findメソッドとは

要素をブロックで評価し
結果が真になった最初の値を返します。

厳密にはRubyのメソッドで
同等のメソッドに、detectというメソッドもあります。

Railsで一般的にfindというと
ActiveRecordのメソッドをイメージしますね!

なので、差別化するために
あえてdetectを使う場合もあるようです。

基本的な使い方

配列に対して使います。

例えば
ある配列に対して最初の偶数の値を取得したい時

こんな感じ

# 適当な配列
$ array = [1, 2, 3, 4, 5]

# 最初の偶数の値を取得する
$ array.find {|i| i.even?}
=> 2

取れましたね!
最初に評価が真になった値が返って来ています。

selectとの違い

配列を評価するメソッドにselectというメソッドもあるので
selectとfindの違いについても軽く触れておきます。

selectメソッドについても、こちらで詳しく紹介しています。

findでは
配列をブロックで評価し、真になった最初の値を返します。
値が存在しない場合には、nilを返します。

selectでは
配列をブロックで評価し、真になった全ての値を返します。
値が存在しない場合には、[ ]空配列を返します。

$ array = [1, 2, 3, 4, 5]

# findでは、最初の偶数の値を取得する
$ array.find {|i| i.even?}
=> 2

# 値が存在しない場合は、nilを返す
$ array.find {|i| i == 0}
=> nil

---

# selectでは、全ての偶数の値を取得する
$ array.select {|i| i.even?}
=> [2, 4]

# 値が存在しない場合は、[]を返す
$ array.select {|i| i == 0}
=> []

次は少しトリッキーな使い方をしてみます。

連想配列に対して使う

連想配列に対して、特定の値が含まれているかどうかを
判定したい場合を想定します。

# こんな配列があった時
$ array = [ {id: 1, name: 'Pikachu'}, {id: 2, name: 'Mimikyu'}, {id: 3, name: 'Yamper'} ]

# id == 2のhashを取得する
$ array.find {|a| a[:id] == 2}
=> {:id=>2, :name=>"Mimikyu"}

取れましたね!

連想配列に対してfindを使う場合には
評価するブロックにhashが渡ってくるので
hash[:key]という具合に評価すれば良さそうです。

# hashの値が複数わかっている場合には、条件を繋げることもできる
$ array.find {|a| a[:id] == 2 && a[:name] == 'Mimikyu'}
=> {:id=>2, :name=>"Mimikyu"}

まとめ

今回は、Rubyのfindメソッドについて紹介しました。

findは、detectと同等のメソッド
要素をブロックで評価して、評価が真になった最初の値を返します。

selectとの違いは、評価が真になった
最初の値を返す、
全ての値を返す、かです!

また、findで連想配列(hash)に対して
指定した値を検索する方法についても紹介しました。

ピックアップ記事

  1. 【Blender】レンダリング結果を新規ウィンドウで開かないようにする
  2. 【Blender】zip版のBlenderをBlender Launcherに移…
  3. 【CSS】おしゃれなラジオボタンを作る
  4. 起動時の設定をカスタムする【Blender】
  5. 【WPテーマ自作】ローカル環境でWP開発ができる「Local」の導入

関連記事

 
  1. railsをproductionモードで実行する

    Ruby on Rails

    【Rails】railsをproductionモードで実行する

    結論--environmentオプションを使用します。…

  2. Ruby on Rails

    【Rails】migrationでカラムを追加・削除したい

    migrationファイルでよく使う記述。テーブルにカラムを追加・削…

  3. Ruby on Rails

    【Rails】Factory already registered: エラー

    railsでアプリ開発中、最新のfeatureブランチでリベースして…

  4. Ruby on Rails

    【Rails】文字列からHTMLタグを取り除く方法

    Railsで、HTMLタグを取り除いて文字列を出力したい時があります。…

  5. Ruby on Rails

    【Rails】RSpecのお作法メモ

    RSpecを書く機会が増えてきたので、記法の備忘録として記事にします…

  6. Ruby on Rails

    【Rails】modelを作成する

    結論rails generateコマンドを使いましょ…

カレンダー

2024年11月
 123
45678910
11121314151617
18192021222324
252627282930  

最近の記事

  1. gitでファイル変更の一部をコミットする

    git

    git add -p でファイルの一部をコミットする【Git】
  2. Blender

    【Blender】レンダリング結果を新規ウィンドウで開かないようにする
  3. Ruby on Rails

    【Rails】findメソッドで連想配列から指定した値を検索する
  4. Ruby on Rails

    【Rails】selectメソッドで特定の条件を満たす要素を取得する
  5. Blender

    起動時の設定をカスタムする【Blender】
PAGE TOP