Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
配列.include? / index / find_index
配列の中に特定の要素が含まれているか確認したり、その要素のインデックスを取得したりするメソッドです。
構文
# 要素が含まれているか判定します。
配列.include?(値)
# 条件に一致する最初の要素のインデックスを返します。
配列.index(値)
配列.index { |要素| 条件式 }
# index の別名です。
配列.find_index(値)
配列.find_index { |要素| 条件式 }
# 条件に一致する最後の要素のインデックスを返します。
配列.rindex(値)
配列.rindex { |要素| 条件式 }
メソッド一覧
| メソッド | 概要 |
|---|---|
| include?(val) | 配列に指定した値が含まれていれば『true』を、含まれなければ『false』を返します。 |
| index(val) | 最初に一致した要素のインデックスを返します。見つからない場合は『nil』を返します。 |
| index { |e| ... } | ブロックの条件に最初に一致した要素のインデックスを返します。 |
| find_index | 『index』の別名です。同じ動作をします。 |
| rindex(val) | 最後に一致した要素のインデックスを返します。見つからない場合は『nil』を返します。 |
サンプルコード
果物 = ["りんご", "バナナ", "みかん", "バナナ", "ぶどう"]
# include? で存在確認をします。
puts 果物.include?("バナナ") # true
puts 果物.include?("メロン") # false
# index で最初に一致したインデックスを取得します。
puts 果物.index("バナナ") # 1
puts 果物.index("メロン").inspect # nil(見つからない場合)
# ブロックを使って条件検索をします。
数値 = [10, 25, 3, 47, 8]
puts 数値.index { |n| n > 20 } # 1(25が最初に一致)
puts 数値.find_index { |n| n > 20 } # 1(同じ動作)
# rindex で最後に一致したインデックスを取得します。
puts 果物.rindex("バナナ") # 3
# インデックスを使った要素取得に活用できます。
idx = 果物.index("みかん")
if idx
puts "みかんは#{idx}番目にあります。" # みかんは2番目にあります。
end
# 特定の条件に合う要素の位置を探します。
点数 = [65, 82, 91, 78, 55]
合格ライン = 80
最初の合格 = 点数.index { |点| 点 >= 合格ライン }
puts "最初に合格した番号: #{最初の合格}" # 最初に合格した番号: 1
概要
『include?』は要素の存在を確認するだけでよい場合に使います。インデックス(位置)が必要な場合は『index』または『find_index』を使います。どちらも同じ動作をしますが、ブロックを使う場合は『find_index』の方が意図が伝わりやすいコードになることがあります。
『index』や『rindex』は見つからない場合に『nil』を返します。戻り値を直接演算に使う場合は必ず『nil』チェックを行ってください。
条件に一致する要素そのものを取得したい場合は『select / find』を、要素数を数えるには『count』を使用してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。