Ein Array mit Index abbilden in Ruby
-
Kombinieren Sie die Methoden
map
undeach_with_index
in Ruby -
Kombiniere
map
undwith_index
Methoden in Ruby -
Verwendung von
map
zusammen mit der Ruby Range
Die Methode map
ist in Ruby ziemlich praktisch, und sie ist praktisch, wenn Sie ein Array in ein anderes umwandeln müssen. Der folgende Code verwendet beispielsweise map
, um ein Array aus Kleinbuchstaben in ein Array aus Großbuchstaben umzuwandeln.
Beispielcode:
small_letters = ['a', 'b', 'c', 'd']
capital_letters = small_letters.map { |l| l.capitalize }
puts capital_letters
Ausgabe:
["A", "B", "C", "D"]
Nehmen wir im obigen Beispiel an, dass wir den jeweiligen Index jedes Buchstabens im Array abbilden und abrufen möchten. Wie machen wir das? Nachfolgend sind verschiedene Möglichkeiten aufgeführt, um dies zu erreichen.
Kombinieren Sie die Methoden map
und each_with_index
in Ruby
each_with_index
ist eine aufzählbare Ruby-Methode.
Es tut, was der Name sagt. Es durchläuft ein Array oder einen Hash und extrahiert jedes Element mit seinem jeweiligen Index. Der Aufruf von map
für das Ergebnis von each_with_index
gibt uns Zugriff auf die Indizes.
Hier ist die offizielle Dokumentation von each_with_index
für weitere Erklärungen.
Beispielcode:
small_letters = ['a', 'b', 'c', 'd']
numbered_capital_letters = small_letters.each_with_index.map { |l, i| [i + 1, l.capitalize] }
puts numbered_capital_letters
Ausgabe:
[[1, "A"], [2, "B"], [3, "C"], [4, "D"]]
Kombiniere map
und with_index
Methoden in Ruby
with_index
ist ähnlich wie each_with_index
, aber mit leichten Unterschieden.
Anders als each_with_index
kann with_index
nicht direkt auf einem Array aufgerufen werden. Das Array muss zuerst explizit in einen Enumerator umgewandelt werden.
Da map
automatisch die Konvertierung durchführt, ist die Ausführungsreihenfolge hier wichtig, rufen Sie .map
auf, bevor Sie .with_index
aufrufen.
Beispielcode:
small_letters = ['a', 'b', 'c', 'd']
numbered_capital_letters = small_letters.map.with_index { |l, i| [i + 1, l.capitalize] }
puts numbered_capital_letters
Ausgabe:
[[1, "A"], [2, "B"], [3, "C"], [4, "D"]]
Es ist auch erwähnenswert, dass with_index
ein Argument akzeptiert, das der Offset des Index ist, wo der Index beginnen soll. Wir können dieses Argument verwenden, anstatt i + 1
innerhalb des {}
-Blocks machen zu müssen.
Beispielcode:
small_letters = ['a', 'b', 'c', 'd']
numbered_capital_letters = small_letters.map.with_index(1) { |l, i| [i, l.capitalize] }
puts numbered_capital_letters
Ausgabe:
[[1, "A"], [2, "B"], [3, "C"], [4, "D"]]
Hier ist die offizielle Dokumentation von with_index
für weitere Erklärungen.
Verwendung von map
zusammen mit der Ruby Range
Die Ruby Range ist eine Reihe von Werten mit einem Anfang und einem Ende.
Beispielsweise ist 1..10
oder 1...11
ein Bereich, der eine Reihe von Werten von 1
bis 10
darstellt. Wir können dies zusammen mit der Methode map
verwenden, um das gleiche Ergebnis wie in den obigen Beispielen zu erzielen.
Beispielcode:
small_letters = ['a', 'b', 'c', 'd']
numbered_capital_letters = (0...small_letters.length).map { |i| [i + 1, small_letters[i].capitalize] }
puts numbered_capital_letters
Ausgabe:
[[1, "A"], [2, "B"], [3, "C"], [4, "D"]]
Verwandter Artikel - Ruby Array
- %i und %I in Ruby
- Arrays in Ruby zusammenführen
- Duplikate aus einem Ruby-Array entfernen
- Kombinieren Sie Array mit String in Ruby
- Konvertieren Sie Array in Ruby in Hash
- Quadratisches Array-Element in Ruby