こんにちは! フリーエンジニアの長瀬です。
rubyでは配列の要素数を取得するためにlengthメソッド、またはsizeメソッドを使用します。
また、条件を指定して配列の要素を取り出すにはcountメソッドを使用すると便利です。
この記事では、
・配列とは?
・lengthの基本的な使い方
・sizeの基本的な使い方
という配列の要素を取得する基本的な方法から、
・配列の要素数を条件付きで取得する方法
・countの基本的な使い方
・countでnil(空の要素)を除いた要素数を数える方法
などの応用的な使い方についても解説していきます。
配列とは?
rubyにおける配列とは、一つのオブジェクトが入っている変数に対して複数のオブジェクトへの参照を可能にする変数です。
配列についてはこちらの記事で詳しく説明してありますので、基本を確認する必要のある場合は参照ください。
簡単に言うと沢山のオブジェクトを入れておくことのできる変数です。
記述は以下のようになります。
array = ["red","blue","yellow"]
[]で囲み、”,”で区切ることで複数のオブジェクトを扱えます。
この[]の中に入っているオブジェクトを要素と呼びます。
sizeとlenghで配列の要素数を取得する方法
単純に配列の中に入っている要素数が知りたい場合、length,sizeメソッドを使用することで簡単に要素数を取得することができます。
また、countメソッドで条件付きで要素数を取得したり、nilを除いた個数を取得することも可能です。
それぞれのメソッドの使い方について解説していきます。
lengthの基本的な使い方
単純に配列に入っている要素の数を知りたい場合は「lengthメソッド」か「sizeメソッド」を使用しますが、lengthにはarrayクラスとstringクラスの二種類があります。
arrayクラスのlengthメソッドは配列に対して使用し、配列の要素数を返します。
また、strignクラスのlengthメソッドは文字列が入っている変数に対して使用すると文字の数を返します。
次のプログラムでlengthメソッドの使い方を確認してみましょう。
array = ["red","blue","yellow"] str = "侍エンジニア" p array.length p str.length
[実行結果]
3 6
このプログラムの実行結果から、lengthメソッドで配列のサイズと文字列をそれぞれ取得できることが確認できました。
sizeの基本的な使い方
sizeメソッドはlengthメソッドとまったく同じ結果を返します。
配列のサイズを調べるという意味ではlengthよりもコードを見たときに何をしているのかわかりやすい記述になりますね。
array = ["red","blue","yellow"] str = "侍エンジニア" p array.size p str.size
[実行結果]
3 6
また、lengthと同じようにstringクラスで使用すると文字列を数えることもできます。
countで配列の要素数を条件付きで取得する方法
配列の要素を条件付きで数えたい場合はcountメソッドを使用します。
countの基本的な使い方
引数に条件を指定することで条件に合った要素の数だけを取得できます。
“red”の要素数が知りたい場合、
array = ["red","blue","yellow","red","green"] p array.count("red")
[実行結果]
2
他にも引数にブロックを渡すことで少し複雑な条件を指定することもできます。
要素を2で割った余りが0の数、つまり偶数の数を数えてみましょう。
array = [1,2,2,2,3,3,4,5,] p array.count{ |num| num % 2 == 0}
[実行結果]
4
また、引数を指定しないでcountメソッドを使用した場合はlengthやsizeと同じように要素数を返します。
countでnil(空の要素)を除いた要素数を数える方法
配列にnilが入っていた場合、nilをカウントしたくない!という時にはcountメソッドに条件を指定します。
array = ["red","blue",nil,"yellow"] p array.count{ |num| !num.nil? }
[実行結果]
3
以前は「nitems」というメソッドが使用されていましたが、Ruby1.9で廃止になりましたのでcountメソッドで条件を指定するようにしましょう。
まとめ
今回は主に配列の要素数を取得するための3つのメソッドについて解説しました。
・lengthメソッド
・sizeメソッド
・countメソッド
どれも同じ結果を返すことができますが要素数を数えるだけでなく、条件を指定して要素数を取得する方法も学びました。
要素数のカウント方法がわからなくなったらこの記事を思い出してみて下さいね。