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]