Asignar un array con índice en Ruby
- 
          
            Combine los métodos mapyeach_with_indexen Ruby
- 
          
            Combine los métodos mapywith_indexen Ruby
- 
          
            Utilice mapjunto 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