Find a Value in a Ruby Array

The best way to find a value in a Ruby array is by using either the find or detect method; both are aliases and can be used interchangeably. They accept a block argument and return the first value that satisfies any given condition specified in the block.

The example below looks for the odd number in an array of 2 to 4.

Example code:

numbers = [2, 3, 4]
odd_number = numbers.find { |n| n.odd? }
puts odd_number

Output:

3

Example code:

numbers = [2, 3, 4]
odd_number = numbers.detect { |n| n.odd? }
puts odd_number

Output:

3

Another way of finding a value in an array is by using the select method.

Although not efficient but it’s worth mentioning. It’s inefficient because it iterates through the whole array we are searching, regardless of whether the value we are looking for is at the beginning of the array or the end, unlike the find and detect that stop iterating soon as they find the value.

It’s also worth mentioning that the select method is designed to search for multiple values and return them as an array. Assuming we were expecting multiple odd numbers in the example above, the select would have been a preferred method to use.

Example code:

numbers = [2, 3, 4, 5]
odd_numbers = numbers.select { |n| n.odd? }
puts odd_numbers

Output:

[3, 5]
Write for us
DelftStack articles are written by software geeks like you. If you also would like to contribute to DelftStack by writing paid articles, you can check the write for us page.

Related Article - Ruby Array

  • Map an Array With Index in Ruby
  • Iterate Through a Ruby Array