Asignar un array con índice en Ruby
-
Combine los métodos
map
yeach_with_index
en Ruby -
Combine los métodos
map
ywith_index
en Ruby -
Utilice
map
junto con la gama 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
- %i y %I en Ruby
- Combine Array a String en Ruby
- Convertir Array a Hash en Ruby
- Elemento de matriz cuadrada en Ruby
- Eliminar duplicados de una matriz Ruby
- Fusionar arreglos en Ruby