Как найти значение в массиве с помощью Ruby 1.8.7?
Найти значение в массиве
Ответ 1
Я предполагаю, что вы пытаетесь найти, существует ли определенное значение внутри массива, и если это возможно, вы можете использовать Array # include? (значение):
a = [1,2,3,4,5]
a.include?(3) # => true
a.include?(9) # => false
Если вы имеете в виду что-то еще, проверьте API Ruby Array
Ответ 2
Использование Array#select
даст вам массив элементов, соответствующих критериям. Но если вы ищете способ получить элемент из массива, который соответствует вашим критериям, Enumerable#detect
будет лучшим способом:
array = [1,2,3]
found = array.select {|e| e == 3} #=> [3]
found = array.detect {|e| e == 3} #=> 3
В противном случае вам придется делать что-то неловкое, как:
found = array.select {|e| e == 3}.first
Ответ 3
Как это?
a = [ "a", "b", "c", "d", "e" ]
a[2] + a[0] + a[1] #=> "cab"
a[6] #=> nil
a[1, 2] #=> [ "b", "c" ]
a[1..3] #=> [ "b", "c", "d" ]
a[4..7] #=> [ "e" ]
a[6..10] #=> nil
a[-3, 3] #=> [ "c", "d", "e" ]
# special cases
a[5] #=> nil
a[5, 1] #=> []
a[5..10] #=> []
или как это?
a = [ "a", "b", "c" ]
a.index("b") #=> 1
a.index("z") #=> nil
Ответ 4
вы можете использовать Array.select или Array.index для этого.
Ответ 5
Использование:
myarray.index "valuetoFind"
Это вернет вам индекс нужного элемента или нуль, если ваш массив не содержит значения.
Ответ 6
Если вы хотите найти одно значение из массива, используйте Array#find
arr = [1,2,6,4,9]
arr.find {|e| e%3 == 0} #=> 6
arr.select {|e| e%3 == 0} #=> [ 6, 9 ]
6.in?
Чтобы узнать, существует ли значение в массиве, кроме #includes?
Вы также можете использовать #in?
когда с ActiveSupport, который работает для любого объекта, отвечает на #include?
:
arr = [1, 6]
6.in? arr
#=> true
Ответ 7
Этот ответ для всех, кто осознает принятый ответ, не затрагивает вопрос, который он в настоящее время написал.
В вопросе спрашивается, как найти значение в массиве. Принятый ответ показывает, как проверить, существует ли в массиве значение .
Уже существует пример использования index
, поэтому я предоставляю пример с использованием метода select
.
1.9.3-p327 :012 > x = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
1.9.3-p327 :013 > x.select {|y| y == 1}
=> [1]
Ответ 8
Я знаю, что на этот вопрос уже был дан ответ, но я пришел сюда, чтобы найти способ фильтровать элементы в массиве на основе некоторых критериев. Итак, вот мой пример решения: используя select
, я нахожу все константы в классе, начинающиеся с "RUBY _"
Class.constants.select {|c| c.to_s =~ /^RUBY_/ }
ОБНОВЛЕНИЕ: Тем временем я обнаружил, что массив # grep работает намного лучше. Для приведенного выше примера
Class.constants.grep /^RUBY_/
сделал трюк.
Ответ 9
Спасибо за ответы.
Мне понравилось:
puts 'find' if array.include?(value)
Ответ 10
Вы можете пойти на методы массива.
Чтобы увидеть все методы массива, используйте methods
function with array. Например,
a = ["name", "surname"]
a.methods
Кстати, вы можете использовать другой метод для проверки значения в массиве. Вы можете использовать a.include?("name")
.