Ein Array mit Index abbilden in Ruby
-
Kombinieren Sie die Methoden
mapundeach_with_indexin Ruby -
Kombiniere
mapundwith_indexMethoden in Ruby -
Verwendung von
mapzusammen 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