Mapper un tableau avec un index en Ruby
- 
          
            Combinez les méthodes mapeteach_with_indexdans Ruby
- 
          
            Combinez les méthodes mapetwith_indexdans Ruby
- 
          
            Utilisez mapavec 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