Dans Ruby, comment puis-je trouver une valeur dans un tableau?
Dans Ruby, comment puis-je trouver une valeur dans un tableau?
Réponses:
J'imagine 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, vérifiez l' API Ruby Array
L'utilisation 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, ce Enumerable#detect
serait une meilleure façon de procéder:
array = [1,2,3]
found = array.select {|e| e == 3} #=> [3]
found = array.detect {|e| e == 3} #=> 3
Sinon, vous devrez faire quelque chose de maladroit comme:
found = array.select {|e| e == 3}.first
Enumerable#select
mais #detect
c'est exactement ce que je cherchais.
array.select{}
parcourra tous les éléments du tableau en recherchant ceux qui correspondent à la condition. array.find
à la place retournera le premier élément qui correspond à la condition. Utilisation si préférable array.find{ |e| e == 3 }
alorsarray.select{ |e| e == 3 }.first
.find_index
je ne sais pas s'il y en a.find
Si vous voulez trouver une valeur à partir du tableau, utilisez Array#find
:
arr = [1,2,6,4,9]
arr.find {|e| e%3 == 0} #=> 6
Voir également:
arr.select {|e| e%3 == 0} #=> [ 6, 9 ]
e.include? 6 #=> true
Pour savoir si une valeur existe dans un tableau, vous pouvez également l'utiliser #in?
lors de l'utilisation d'ActiveSupport. #in?
fonctionne pour tout objet qui répond à #include?
:
arr = [1, 6]
6.in? arr #=> true
Array#find
dans les références Ruby. Ça doit être un truc Rails puisque d'autres personnes l'ont mentionné. Hmmm ....
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
vous pouvez utiliser Array.select ou Array.index pour ce faire.
Utilisation:
myarray.index "valuetoFind"
Cela vous renverra l'index de l'élément souhaité ou nul si votre tableau ne contient pas la valeur.
Cette réponse est pour tous ceux qui réalisent que la réponse acceptée ne répond pas à la question telle qu'elle est actuellement écrite.
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
, donc je donne un exemple utilisant la select
méthode.
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]
select
ait déjà été fourni comme réponse en 2009, vous avez fourni un extrait de code qui est un peu meilleur. Alors après y avoir repensé, je rétracte ce que j'ai dit plus tôt.
Je sais que cette question a déjà reçu une réponse, mais je suis venu ici à la recherche d'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 de Class qui commencent par "RUBY_"
Class.constants.select {|c| c.to_s =~ /^RUBY_/ }
MISE À JOUR: En attendant, j'ai découvert que Array # grep fonctionne beaucoup mieux. Pour l'exemple ci-dessus,
Class.constants.grep /^RUBY_/
a fait l'affaire.
Class.constants.grep /^RUBY_/
fait l'affaire.
Merci pour les réponses.
J'ai aimé ceci:
puts 'find' if array.include?(value)
Vous pouvez opter pour des méthodes de tableau.
Pour voir toutes les méthodes de tableau, utilisez la methods
fonction avec tableau. Par exemple,
a = ["name", "surname"]
a.methods
Par ailleurs, vous pouvez utiliser une méthode différente pour vérifier la valeur dans le tableau que vous pouvez utiliser a.include?("name")
.