Finden einen Wert in einem Ruby-Array
Der beste Weg, einen Wert in einem Ruby-Array zu finden, ist die Verwendung der Methode find
oder detect
; beide sind Aliase und können austauschbar verwendet werden. Sie akzeptieren ein Blockargument und geben den ersten Wert zurück, der eine beliebige im Block angegebene Bedingung erfüllt.
Das folgende Beispiel sucht nach der ungeraden Zahl in einem Array von 2
bis 4
.
Beispielcode:
numbers = [2, 3, 4]
odd_number = numbers.find { |n| n.odd? }
puts odd_number
Ausgabe:
3
Beispielcode:
numbers = [2, 3, 4]
odd_number = numbers.detect { |n| n.odd? }
puts odd_number
Ausgabe:
3
Eine andere Möglichkeit, einen Wert in einem Array zu finden, ist die Verwendung der select
-Methode.
Obwohl nicht effizient, aber es ist erwähnenswert. Es ist ineffizient, weil es durch das gesamte gesuchte Array iteriert, unabhängig davon, ob der gesuchte Wert am Anfang oder am Ende des Arrays steht, im Gegensatz zu find
und detect
, die aufhören zu iterieren, sobald sie den gefunden haben Wert.
Erwähnenswert ist auch, dass die Methode select
darauf ausgelegt ist, nach mehreren Werten zu suchen und diese als Array zurückzugeben. Angenommen, wir hätten im obigen Beispiel mehrere ungerade Zahlen erwartet, wäre select
eine bevorzugte Methode gewesen.
Beispielcode:
numbers = [2, 3, 4, 5]
odd_numbers = numbers.select { |n| n.odd? }
puts odd_numbers
Ausgabe:
[3, 5]