初めに
配列の中から奇数の個数を取り出す方法をわからなかった(odd?を初めて学んだ)ので記事にまとめました。
odd? メソッド
公式リファレンスによると
自身が奇数であれば真を返します。そうでない場合は偽を返します。
本題
[1, 2, 3, 4, 5, 6, 7] <= 配列 この中から奇数の個数4を取り出す
- eachメソッドで数を取り出す
- 取り出した数の個数を出す
- 条件分岐で奇数のみの個数を出す
この順番で考えます
1. eachメソッドで数を取り出す
def numbers(nums)
nums.each do |num|
puts num
end
end
numbers([1, 2, 3, 4, 5, 6, 7])
# 出力結果 => 1 2 3 4 5 6 7
2. 取り出した数の個数を出す
def numbers(nums)
count = 0
nums.each do |num|
count += 1 #繰り返される度にcountが1増える
end
puts count
end
numbers([1, 2, 3, 4, 5, 6, 7])
# 出力結果 => 7
3. 条件分岐で奇数のみの個数を出す
def numbers(nums)
count = 0
nums.each do |num|
if num.odd? #numが奇数の時trueを返す
count += 1
end
end
puts count
end
numbers([1, 2, 3, 4, 5, 6, 7])
# 出力結果 => 4
無事に奇数のみを取り出すことができました。
逆に偶数のみ取り出したいときはeven?メソッドがあります
追記
もっと簡単に取得できる方法をコメントで教えてもらったのでそれを記載します。
Enumerable#count を使用
number = [1, 2, 3, 4, 5, 6, 7]
number.count{ |x| x.odd? }
# または
number.count(&:odd?)
# または
number.count{ |x| x % 2 != 0}
最後に
公式リファレンスを見ると知らないことがたくさんあるので定期的に見ることが大事だと思いました。
最後まで読んでくださってありがとうございます。