web-dev-qa-db-fra.com

Trouver de la valeur dans Array

Comment trouver une valeur dans Array à l'aide de Ruby 1.8.7?

96
Lucas Renan

Je suppose que vous essayez de trouver si une certaine valeur existe dans le tableau, et si c'est le cas, vous pouvez utiliser Array # include? (Valeur):

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

Si vous voulez dire autre chose, consultez API Ruby Array

105
Mark Westling

Utiliser Array#select vous donnera un tableau d'éléments qui répondent aux critères. Mais si vous cherchez un moyen d'extraire l'élément du tableau qui répond à vos critères, Enumerable#detect serait une meilleure solution:

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

Sinon, vous devriez faire quelque chose de bizarre comme:

found = array.select {|e| e == 3}.first
55
Will Warner

Comme ça?

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]               #=> []

ou comme ça?

a = [ "a", "b", "c" ]
a.index("b")   #=> 1
a.index("z")   #=> nil

Voir le manuel .

21
Ewan Todd

vous pouvez utiliser Array.select ou Array.index pour le faire.

19
andyp

Utilisation:

myarray.index "valuetoFind"

Cela vous retournera l'index de l'élément que vous voulez ou nil si votre tableau ne contient pas la valeur.

15
Wim Hollebrandse

Si vous voulez trouver une valeur dans array, utilisez 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?

Pour rechercher si une valeur existe dans un tableau, à l'exception de #includes?, vous pouvez également utiliser #in? avec ActiveSupport, qui fonctionne pour tout objet qui répond à #include?:

arr = [1, 6]
6.in? arr
#=> true
11
fangxing

Cette réponse s’adresse à tous ceux qui se rendent compte que la réponse acceptée ne répond pas à la question telle qu’elle est rédigée.

La question demande comment trouver une valeur dans un tableau. La réponse acceptée montre comment vérifier si une valeur existe dans un tableau.

Il existe déjà un exemple utilisant index. Je fournis donc un exemple utilisant la méthode 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]
9
Mike S

Je sais que cette question a déjà reçu une réponse, mais je suis venu ici pour chercher un moyen de filtrer les éléments d'un tableau en fonction de certains critères. Voici donc mon exemple de solution: en utilisant select, je trouve toutes les constantes dans Class qui commencent par "Ruby_"

Class.constants.select {|c| c.to_s =~ /^Ruby_/ }

UPDATE: Entre temps, j'ai découvert que Array # grep fonctionnait beaucoup mieux. Pour l'exemple ci-dessus, 

Class.constants.grep /^Ruby_/

a fait le tour.

8
mydoghasworms

Merci pour les réponses.

J'ai fait comme ça:

puts 'find' if array.include?(value)
1
Lucas Renan

Vous pouvez aller pour les méthodes de tableau.

Pour voir toutes les méthodes de tableau, utilisez la fonction methods avec le tableau . Par exemple,

a = ["name", "surname"] 
a.methods

En passant, vous pouvez utiliser différentes méthodes pour vérifier la valeur dans arrayVous pouvez utiliser a.include?("name").

0
Foram Thakral