0
0

More than 1 year has passed since last update.

each_with_indexメソッドを使ってみた備忘録

Last updated at Posted at 2022-09-14

今日も学んだことを忘れない為にメモします

each_with_indexメソッドとは?

each_with_indexは、Rubyに標準で組み込まれている要素の繰り返し処理であるeachメソッドに、その要素が何番目に処理されたのかも表すことが出来る機能がついたメソッド。
これを使えば任意の数字が配列の中の何番目に格納されているかを確認できるプログラムを実装できる。

例えば下記のようにランダムな数字が入った配列があるとする。

[3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]

この中から任意の数字を探して何番目に含まれているかいない確認した場合は下記のように記述する。

def search(target_num, input)

  input.each_with_index do |num, index|
    if num == target_num
      puts "#{index + 1}番目にあります"
      return
    end
  end
  puts "その数字は含まれていません"
end

input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
search(10, input)

配列を変数inputに代入して確認したい数字とinputという変数を実引数としてセットしてsearchメソッドを呼び出す。
そして、呼び出されたsearchメソッドでは、実引数でセットした値を仮引数target_numとinputとして受け取る。

searchメソッド内ではinput.each_with_indexでinputに格納されている要素を1つひとつnumとして取り出すと同時に、要素毎に割り当てられている添字をindexとして取得する。

次に、if文でnum == target_numという条件式を設定
numとtarget_numが等しければ、numがinputの中の何番目に含まれているかが出力される。
添字は0から始まるので#{index + 1}と記述して、「0番目」が出力されないようにする。

numとtarget_numが等くなければ、「その数は含まれていません」と出力される。

今回、配列には10は含まれていないので「その数は含まれていません」と出力される。

結果
その数は含まれていません

*下記のようにreturnではなくelseで記述すると配列の要素の数、処理が行われる

def search(target_num, input)

  input.each_with_index do |num, index|
    if num == target_num
      puts "#{index + 1}番目にあります"
    else
      puts "その数は含まれていません"
    end
  end
end

input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
search(92, input)
結果
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません

以上がeach_with_indexメソッドを使ってみた備忘録になります。
returnってどこで使うんだろうと思ってましたがこういう場面で使うんだってreturnの使いどころも学べました。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0