How to Return All Odd Numbers in a Ruby Array?

Find all odd numbers in a Ruby array

In Ruby, you can get all odd numbers in an array of integers by using the Array#select method. This would return a new array containing all odd numbers:

numbers = [-5, -2, -1, 0, 1, 3, 4, 7]
odd_numbers = numbers.select { | item | item.odd? }

print odd_numbers #=> [-5, -1, 1, 3, 7]
print numbers #=> [-5, -2, -1, 0, 1, 3, 4, 7]

As you can see in the example above, the original array is unchanged.

You could also shorten this by using the &: syntax, for example, like so:

print numbers.select(&:odd?) #=> [-5, -1, 1, 3, 7]

When no matches are found, an empty array is returned:

numbers = [-2, 0, 4]
odd_numbers = numbers.select { | item | item.odd? }

print odd_numbers #=> []

As an alternative to using the Integer#odd? method, you can also use the modulus operator to filter by odd numbers, for example, like so:

print numbers.select { | item | item % 2 == 1 } #=> [-5, -1, 1, 3, 7]

Hope you found this post useful. It was published . Please show your love and support by sharing this post.