Mapper un tableau avec un index en Ruby
-
Combinez les méthodes
map
eteach_with_index
dans Ruby -
Combinez les méthodes
map
etwith_index
dans Ruby -
Utilisez
map
avec la gamme Ruby
La méthode map
est assez pratique dans Ruby, et elle est utile lorsque vous avez besoin de transformer un tableau en un autre. Par exemple, le code ci-dessous utilise map
pour convertir un tableau de lettres minuscules en un tableau de lettres majuscules.
Exemple de code :
small_letters = ['a', 'b', 'c', 'd']
capital_letters = small_letters.map { |l| l.capitalize }
puts capital_letters
Production :
["A", "B", "C", "D"]
Dans l’exemple ci-dessus, disons que nous voulons mapper et obtenir l’index respectif de chacune des lettres du tableau. Comment fait-on cela? Vous trouverez ci-dessous différentes façons d’y parvenir.
Combinez les méthodes map
et each_with_index
dans Ruby
Le each_with_index
est une méthode Ruby énumérable.
Il fait ce que son nom indique. Il parcourt un tableau ou un hachage et extrait chaque élément avec son index respectif. L’appel de map
sur le résultat de each_with_index
nous donne accès aux index.
Voici la documentation officielle de each_with_index
pour plus d’explications.
Exemple de code :
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
Production :
[[1, "A"], [2, "B"], [3, "C"], [4, "D"]]
Combinez les méthodes map
et with_index
dans Ruby
Le with_index
est similaire à each_with_index
mais avec de légères différences.
Contrairement à each_with_index
, with_index
ne peut pas être appelé directement sur un tableau. Le tableau doit d’abord être converti explicitement en énumérateur.
Puisque map
gère automatiquement la conversion, l’ordre d’exécution est important ici, invoquez map
avant d’appeler .with_index
.
Exemple de code :
small_letters = ['a', 'b', 'c', 'd']
numbered_capital_letters = small_letters.map.with_index { |l, i| [i + 1, l.capitalize] }
puts numbered_capital_letters
Production :
[[1, "A"], [2, "B"], [3, "C"], [4, "D"]]
Il convient également de mentionner que with_index
accepte un argument qui est le décalage de l’index, à partir duquel l’index doit commencer. Nous pouvons utiliser cet argument au lieu d’avoir à faire i + 1
à l’intérieur du bloc {}
.
Exemple de code :
small_letters = ['a', 'b', 'c', 'd']
numbered_capital_letters = small_letters.map.with_index(1) { |l, i| [i, l.capitalize] }
puts numbered_capital_letters
Production :
[[1, "A"], [2, "B"], [3, "C"], [4, "D"]]
Voici la documentation officielle de with_index
pour plus d’explications.
Utilisez map
avec la gamme Ruby
La Ruby Range est un ensemble de valeurs avec un début et une fin.
Par exemple, 1..10
ou 1...11
est une plage qui représente un ensemble de valeurs de 1
à 10
. Nous pouvons l’utiliser avec la méthode map
pour obtenir le même résultat que ce que nous avons dans les exemples ci-dessus.
Exemple de code :
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
Production :
[[1, "A"], [2, "B"], [3, "C"], [4, "D"]]
Article connexe - Ruby Array
- Convertir un tableau en chaîne en Ruby
- Itérer dans un tableau Ruby
- La signification de la syntaxe %w en Ruby
- Somme d'un tableau de nombres en Ruby
- Trouver une valeur dans un tableau Ruby