Как найти значение в массиве ruby

Ответы
Аватар пользователя Nikolai Gagarinov
Nikolai Gagarinov
26 ноября 2021

Узнать, содержит ли массив значение можно методом include?


a = [1,2,3,4,5]
a.include?(3)   # true
a.include?(9)   # false

С помощью метода find() (и его алиас detect())

И вернут первое значение, которое удовлетворяет условию в блоке. Если ничего не найдено, то вернется nil

(1..10).detect   { |i| i % 5 == 0 and i % 7 == 0 }   #=> nil
(1..10).find     { |i| i % 5 == 0 and i % 7 == 0 }   #=> nil
(1..100).detect  { |i| i % 5 == 0 and i % 7 == 0 }   #=> 35
(1..100).find    { |i| i % 5 == 0 and i % 7 == 0 }   #=> 35

Еще можно отфильтровать массив и взять первое значение, которое попадает к условию

array = [1,2,3]
found = array.select {|e| e == 3} # [3]

found = array.select {|e| e == 3}.first # 3