Ruby 配列の要素を検索、取得する8つの方法

こんにちは!

FunTech編集長です!

今回は、Rubyの配列の要素を検索、取得する方法について解説していきます。

  • 条件にあった複数の要素を検索取得
  • 条件式に合わない要素以降を検索取得
  • 1つの要素取得
  • 複数要素取得

など、配列の検索、取得について網羅的に解説していきたいと思います!

それでは行ってみましょう!

検索

まずは検索について見ていきます。

Rubyには、検索のために様々なメソッドが用意されています。

eachメソッド内で条件分岐などで書くことも可能ですが、もっと簡単に要素を検索するメソッドが存在しています。

 

編集長

配列の検索メソッドは数が多いけど、知らないとちょっと面倒な書き方になるかも!

スマートなコードを書くためにもしっかりと覚えていこう!

条件に当てはまる要素を複数取得 / select

まず条件に当てはまる要素を複数取得する方法について見ていきます。

条件に当てはまる要素を複数取得するには「selectメソッド」を使用します。

ブロックに配列の要素1つ1つが代入され、条件式がTrueの時の要素のみ返ってきている事がわかります。

編集長

selectは結構使うよ!

eachとかのループの中で条件分岐してたら初心者と思われるから注意!

条件に当てはまらない要素を複数取得 / reject

次に、条件に当てはまらない要素を複数取得する方法について見ていきます。

条件に当てはまる要素を複数取得するには「rejectメソッド」を使用します。

selectメソッドと同じように、ブロック内に配列の要素が渡され、Falseの時のみ返ってきている事がわかります。

条件に当てはまる要素の初め1つ取得 / find

次に条件に当てはまる要素の、初めの1つを取得する方法について見てきます。

その際には「findメソッド」を使用します。

selectメソッドと違い、条件式に初めて合う数字である「1」のみが取得されていることがわかります。

 

条件に当てはまる要素のindexを取得 / find_index

次に「findメソッド」で取得した要素のindexを取得してみます。

findメソッドで取得した要素のindexは「find_indexメソッド」を使用することで取得できます。

findで取得した「1」のindexである「0」が取得されていることがわかります。

条件に当てはまらない要素の手前まで取得 / take_while

次に条件に当てはまらない要素の手前まで取得する方法について見ていきます。

その際には「take_whileメソッド」を使用します。

「num < 4」がfalseになる「4」以前まで配列が取得できていることがわかります。

編集長
take_whileとdrop_whileはあんま使ってるとこ見たこと無いかな....

でも教養として知っといた方が良さそう!

条件に当てはまらない要素以降から取得 / drop_while

次にtake_whileとは逆に、条件に当てはまらない要素以降を取得する方法について見ていきます。

その際には「drop_whileメソッド」を使用します。

「num<4」がfalseになる「4」以前まで配列が取得できていることがわかります。

取得

次に要素を取得する方法について見ていきます。

「1つの要素を取得する方法」「複数の要素を取得する方法」に分けて見ていきたいと思います。

1つの要素を取得 / []

まずは1つの要素を取得する方法について見ていきましょう。

1つの要素の取得は、「[]」を使用することで可能になります。

このようにindexが「3」の要素が取得できていることがわかります。

編集長

上記のようにindexを数字で指定して要素を取得する方法は結構まれ!

indexでの指定は、処理によってずれる場合があるし、数字じゃ何を指しているかわからないから!

indexは直接指定するのではなく、定数などに入れて意図を明確にするように癖付けよう!

 

複数の要素を取得 / [..]

次に複数の要素を取得する方法について見ていきましょう。

複数の要素を取得するには、範囲オブジェクトである「[..]」を使用することで可能になります。

このようにindexが「0から3」の要素が取得されていることがわかります。

4980円のプログラミングスクール

プログラミングスクールに通いたいけど

  • 「値段が高すぎる」
  • 「実力がつくか不安」
  • 「しっかりした先生に教えてもらえるか不安」

と思ったことはありませんか?

 

でもそんなあなたの悩みは一気に解決するんです。

「月額4980円で現役フリーランスエンジニアに質問し放題なプログラミングスクール」

を作りました。

 

人数に限りがありますのでお申し込みはお早めに。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です