Asignar un array con índice en Ruby

Nurudeen Ibrahim 30 enero 2023
  1. Combine los métodos map y each_with_index en Ruby
  2. Combine los métodos map y with_index en Ruby
  3. Utilice map junto con la gama Ruby
Asignar un array con índice en Ruby

El método map es bastante útil en Ruby, y resulta útil cuando necesita transformar un array en otra. Por ejemplo, el siguiente código usa map para convertir un array de letras minúsculas en un array de letras mayúsculas.

Código de ejemplo:

small_letters = ['a', 'b', 'c', 'd']
capital_letters = small_letters.map { |l| l.capitalize }
puts capital_letters

Producción :

["A", "B", "C", "D"]

En el ejemplo anterior, digamos que queremos mapear y obtener el índice respectivo de cada una de las letras del array. ¿Como hacemos eso? A continuación se enumeran diferentes formas de lograrlo.

Combine los métodos map y each_with_index en Ruby

El each_with_index es un método enumerable de Ruby.

Hace lo que su nombre indica. Itera a través de un arreglo o hash y extrae cada elemento con su respectivo índice. Llamar a map en el resultado de each_with_index nos da acceso a los índices.

Aquí está la documentación oficial de each_with_index para más explicaciones.

Código de ejemplo:

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

Producción :

[[1, "A"], [2, "B"], [3, "C"], [4, "D"]]

Combine los métodos map y with_index en Ruby

El with_index es similar a each_with_index pero con ligeras diferencias.

A diferencia de each_with_index, with_index no se puede llamar directamente en un array. Primero, la matriz debe convertirse explícitamente en un enumerador.

Dado que map maneja automáticamente la conversión, el orden de ejecución importa aquí, invoque .map antes de llamar a .with_index.

Código de ejemplo:

small_letters = ['a', 'b', 'c', 'd']
numbered_capital_letters = small_letters.map.with_index { |l, i| [i + 1, l.capitalize] }
puts numbered_capital_letters

Producción :

[[1, "A"], [2, "B"], [3, "C"], [4, "D"]]

También vale la pena mencionar que with_index acepta un argumento que es el desplazamiento del índice, desde donde debe comenzar el índice. Podemos hacer uso de ese argumento en lugar de tener que hacer i + 1 dentro del bloque {}.

Código de ejemplo:

small_letters = ['a', 'b', 'c', 'd']
numbered_capital_letters = small_letters.map.with_index(1) { |l, i| [i, l.capitalize] }
puts numbered_capital_letters

Producción :

[[1, "A"], [2, "B"], [3, "C"], [4, "D"]]

Aquí está la documentación oficial de with_index para más explicaciones.

Utilice map junto con la gama Ruby

La Gama Ruby es un conjunto de valores con un principio y un final.

Por ejemplo, 1..10 o 1...11 es un Rango que representa un conjunto de valores de 1 a 10. Podemos usar esto junto con el método map para lograr el mismo resultado que tenemos en los ejemplos anteriores.

Código de ejemplo:

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

Producción :

[[1, "A"], [2, "B"], [3, "C"], [4, "D"]]

Artículo relacionado - Ruby Array

Artículo relacionado - Ruby Map