LoginSignup
0
0

More than 3 years have passed since last update.

配列の奇数の個数の取り出し

Last updated at Posted at 2020-01-18

初めに

配列の中から奇数の個数を取り出す方法をわからなかった(odd?を初めて学んだ)ので記事にまとめました。

odd? メソッド

公式リファレンスによると

自身が奇数であれば真を返します。そうでない場合は偽を返します。

本題

[1, 2, 3, 4, 5, 6, 7] <= 配列  この中から奇数の個数4を取り出す
  1. eachメソッドで数を取り出す
  2. 取り出した数の個数を出す
  3. 条件分岐で奇数のみの個数を出す

この順番で考えます

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}

最後に

公式リファレンスを見ると知らないことがたくさんあるので定期的に見ることが大事だと思いました。
最後まで読んでくださってありがとうございます。

0
0
4

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