Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
配列.any? / all? / none? / count
配列の要素が条件を満たすかどうかを判定したり、条件に一致する要素の数を数えたりするメソッドです。
構文
# 1つ以上の要素が条件を満たせば true を返します。
配列.any? { |要素| 条件式 }
配列.any? # 要素が1つ以上あれば true
# すべての要素が条件を満たせば true を返します。
配列.all? { |要素| 条件式 }
配列.all? # nil と false 以外の要素のみなら true
# 条件を満たす要素が1つもなければ true を返します。
配列.none? { |要素| 条件式 }
# 条件に一致する要素の数を返します。
配列.count
配列.count(値)
配列.count { |要素| 条件式 }
メソッド一覧
| メソッド | 概要 |
|---|---|
| any? | ブロックありの場合、1つでも条件を満たす要素があれば『true』を返します。ブロックなしの場合、配列が空でなければ『true』を返します。 |
| all? | ブロックありの場合、すべての要素が条件を満たせば『true』を返します。空配列に対しては常に『true』を返します。 |
| none? | 条件を満たす要素が1つもない場合に『true』を返します。 |
| count | 引数・ブロックなしの場合は要素数を返します。値またはブロックを渡すと一致した要素の数を返します。 |
サンプルコード
点数 = [65, 82, 91, 78, 55]
# any? で1つでも条件を満たすか確認します。
puts 点数.any? { |点| 点 >= 90 } # true(91がある)
puts 点数.any? { |点| 点 >= 100 } # false
# all? ですべての要素が条件を満たすか確認します。
puts 点数.all? { |点| 点 >= 50 } # true(全員50以上)
puts 点数.all? { |点| 点 >= 80 } # false
# none? で条件を満たす要素が1つもないか確認します。
puts 点数.none? { |点| 点 < 50 } # true(50未満はいない)
puts 点数.none? { |点| 点 > 90 } # false(91がある)
# count で要素数を数えます。
puts 点数.count # 5(全要素数)
puts 点数.count(82) # 1(値が82の要素数)
puts 点数.count { |点| 点 >= 80 } # 2(80以上の要素数)
# 実用例: バリデーションチェックです。
メールリスト = ["a@example.com", "b@example.com", "invalid-email"]
全員有効 = メールリスト.all? { |m| m.include?("@") }
puts 全員有効 # false
無効なメール数 = メールリスト.count { |m| !m.include?("@") }
puts "無効なメール: #{無効なメール数}件" # 無効なメール: 1件
概要
これらのメソッドは配列全体に対する条件判定を簡潔に書けます。『each』ループとフラグ変数を使う書き方より可読性が高くなります。
『all?』は空配列に対して常に『true』を返します(数学的な「全称命題が空集合で真」という考え方に基づきます)。空配列に対する動作が重要な場合は事前に『empty?』を確認してください。
条件に一致する要素を取り出すには『select / reject』を、要素の存在確認だけであれば『include?』も使用できます。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。