Mapper un tableau avec un index en Ruby

Nurudeen Ibrahim 30 janvier 2023
  1. Combinez les méthodes map et each_with_index dans Ruby
  2. Combinez les méthodes map et with_index dans Ruby
  3. Utilisez map avec la gamme Ruby
Mapper un tableau avec un index en 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

Article connexe - Ruby Map