Encuentra un valor en un array de Ruby
La mejor manera de encontrar un valor en un array de Ruby es utilizando el método find o detect; ambos son alias y se pueden usar indistintamente. Aceptan un argumento de bloque y devuelven el primer valor que satisface cualquier condición especificada en el bloque.
El siguiente ejemplo busca el número impar en un array de 2 a 4.
Código de ejemplo:
numbers = [2, 3, 4]
odd_number = numbers.find { |n| n.odd? }
puts odd_number
Producción :
3
Código de ejemplo:
numbers = [2, 3, 4]
odd_number = numbers.detect { |n| n.odd? }
puts odd_number
Producción :
3
Otra forma de encontrar un valor en un array es utilizando el método select.
Aunque no es eficiente, vale la pena mencionarlo. Es ineficiente porque itera a través de todal array que estamos buscando, independientemente de si el valor que buscamos está al principio o al final del array, a diferencia de find y detect que dejan de iterar tan pronto como encuentran el valor.
También vale la pena mencionar que el método select está diseñado para buscar múltiples valores y devolverlos como un array. Suponiendo que esperábamos varios números impares en el ejemplo anterior, la select habría sido un método preferido para usar.
Código de ejemplo:
numbers = [2, 3, 4, 5]
odd_numbers = numbers.select { |n| n.odd? }
puts odd_numbers
Producción :
[3, 5]