Wie kann ich in Ruby einen Wert in einem Array finden?
Wie kann ich in Ruby einen Wert in einem Array finden?
Antworten:
Ich vermute, Sie versuchen herauszufinden, ob ein bestimmter Wert im Array vorhanden ist, und wenn dies der Fall ist, können Sie Array # include? (Wert) verwenden:
a = [1,2,3,4,5]
a.include?(3) # => true
a.include?(9) # => false
Wenn Sie etwas anderes meinen, überprüfen Sie die Ruby Array-API
Wenn Array#select
Sie verwenden, erhalten Sie eine Reihe von Elementen, die die Kriterien erfüllen. Wenn Sie jedoch nach einer Möglichkeit suchen, das Element aus dem Array herauszuholen, das Ihren Kriterien entspricht, ist Enumerable#detect
dies ein besserer Weg:
array = [1,2,3]
found = array.select {|e| e == 3} #=> [3]
found = array.detect {|e| e == 3} #=> 3
Andernfalls müssten Sie etwas Unangenehmes tun wie:
found = array.select {|e| e == 3}.first
Enumerable#select
aber es #detect
ist genau das, wonach ich gesucht habe.
array.select{}
Durchläuft alle Elemente im Array und sucht nach Elementen, die der Bedingung entsprechen. array.find
Stattdessen wird das erste Element zurückgegeben, das der Bedingung entspricht. So bevorzugt Verwendung array.find{ |e| e == 3 }
dannarray.select{ |e| e == 3 }.first
.find_index
ich weiß nicht, ob es welche gibt.find
Wenn Sie einen Wert aus dem Array suchen möchten, verwenden Sie Array#find
:
arr = [1,2,6,4,9]
arr.find {|e| e%3 == 0} #=> 6
Siehe auch:
arr.select {|e| e%3 == 0} #=> [ 6, 9 ]
e.include? 6 #=> true
Um festzustellen, ob ein Wert in einem Array vorhanden ist, können Sie auch #in?
ActiveSupport verwenden. #in?
funktioniert für jedes Objekt, das reagiert auf #include?
:
arr = [1, 6]
6.in? arr #=> true
Array#find
in den Ruby-Referenzen sehen. Muss eine Rails-Sache sein, da andere Leute es erwähnt haben. Hmmm ....
Enumerable
, ruby-doc.org/core-2.7.1/Enumerable.html#method-i-find
So was?
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] #=> []
oder so?
a = [ "a", "b", "c" ]
a.index("b") #=> 1
a.index("z") #=> nil
Sie können dazu Array.select oder Array.index verwenden.
Verwenden:
myarray.index "valuetoFind"
Dadurch erhalten Sie den Index des gewünschten Elements oder null, wenn Ihr Array den Wert nicht enthält.
Diese Antwort richtet sich an alle, die erkennen, dass die akzeptierte Antwort die aktuell geschriebene Frage nicht beantwortet.
Die Frage stellt , wie man findet Wert in einem Array. Die akzeptierte Antwort zeigt , wie Sie überprüfen , ob ein Wert existiert in einem Array.
Es gibt bereits ein Beispiel mit index
, daher gebe ich ein Beispiel mit der select
Methode.
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
bereits 2009 als Antwort bereitgestellt wurde, ein Beispiel-Snippet bereitgestellt, das etwas besser ist. Nachdem ich es überdacht habe, ziehe ich das zurück, was ich zuvor gesagt habe.
Ich weiß, dass diese Frage bereits beantwortet wurde, aber ich bin hierher gekommen, um nach einer Möglichkeit zu suchen, Elemente in einem Array anhand einiger Kriterien zu filtern. Hier ist mein Lösungsbeispiel: Mit select
finde ich alle Konstanten in der Klasse, die mit "RUBY_" beginnen.
Class.constants.select {|c| c.to_s =~ /^RUBY_/ }
UPDATE: In der Zwischenzeit habe ich festgestellt, dass Array # grep viel besser funktioniert. Für das obige Beispiel
Class.constants.grep /^RUBY_/
hat den Trick gemacht.
Class.constants.grep /^RUBY_/
hat der Trick getan.
Danke für die Antworten.
Mir hat das gefallen:
puts 'find' if array.include?(value)
Sie können Array-Methoden wählen.
Um alle Array-Methoden anzuzeigen, verwenden Sie die methods
Funktion mit Array. Beispielsweise,
a = ["name", "surname"]
a.methods
Übrigens können Sie verschiedene Methoden zum Überprüfen des Werts im Array verwenden a.include?("name")
.