Each con índice
Parte de la sección Fundamentos del Journey de Ruby de Coddy — lección 66 de 88.
A veces necesitas saber no solo el elemento con el que estás trabajando, sino también su posición en el array. El método each_with_index de Ruby te proporciona tanto el elemento como su índice en una sola iteración.
Así es como funciona:
fruits = ["apple", "banana", "cherry"]
fruits.each_with_index do |fruit, index|
puts "#{index}: #{fruit}"
endEsto produce:
0: apple
1: banana
2: cherryObserva que el bloque ahora toma dos variables entre las barras verticales: el elemento viene primero, seguido del índice. El índice comienza en 0, igual que al acceder directamente a los elementos del array.
Esto es particularmente útil cuando necesitas mostrar listas numeradas o rastrear posiciones:
tasks = ["Buy groceries", "Clean room", "Call mom"]
tasks.each_with_index do |task, i|
puts "Task #{i + 1}: #{task}"
endAl agregar 1 al índice, creamos una lista numerada amigable para humanos que comienza desde 1 en lugar de 0. El método each_with_index elimina la necesidad de rastrear manualmente una variable de contador, haciendo que tu código sea más limpio y menos propenso a errores.
Desafío
FácilLee una sola línea de entrada que contenga palabras separadas por comas (por ejemplo, apple,banana,cherry,date).
Divide la entrada en un array de cadenas, luego usa each_with_index para imprimir cada elemento como una lista numerada comenzando desde 1 (no 0).
Cada línea debe seguir este formato: Item 1: apple
Por ejemplo, si la entrada es apple,banana,cherry,date, la salida debe ser:
Item 1: apple
Item 2: banana
Item 3: cherry
Item 4: dateSi la entrada es red,green,blue, la salida debe ser:
Item 1: red
Item 2: green
Item 3: blueSi la entrada es monday,tuesday,wednesday,thursday,friday, la salida debe ser:
Item 1: monday
Item 2: tuesday
Item 3: wednesday
Item 4: thursday
Item 5: fridaySi la entrada es solo, la salida debe ser:
Item 1: soloHoja de referencia
El método each_with_index permite iterar sobre un array mientras se accede tanto al elemento como a su índice:
fruits = ["apple", "banana", "cherry"]
fruits.each_with_index do |fruit, index|
puts "#{index}: #{fruit}"
endSalida:
0: apple
1: banana
2: cherryEl bloque toma dos variables: el elemento primero, luego el índice. El índice comienza en 0.
Para crear listas numeradas amigables para humanos que comiencen desde 1, suma 1 al índice:
tasks = ["Buy groceries", "Clean room", "Call mom"]
tasks.each_with_index do |task, i|
puts "Task #{i + 1}: #{task}"
endPruébalo tú mismo
# Leer la entrada separada por comas
input = gets.chomp
# Dividir la entrada en un array
items = input.split(",")
# TODO: Usar each_with_index para imprimir cada ítem como una lista numerada
# Recuerda: el índice comienza en 0, pero necesitas mostrar empezando desde 1
# Formato: "Item 1: apple"Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 3Operadores lógicos Parte 47Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada del usuario10FizzBuzz con un giro
Descripción general del juegoEl método FizzBuzz2Variables y tipos de datos
Números y variablesTipo de dato StringTipo de dato BooleanTipo de dato SymbolComprobación de tipos de datosConvenciones de nomenclaturaResumen: Creación de variables5Toma de decisiones
Sentencia IfIf - ElseRepaso - Calculadora simpleIf - Else anidadosSentencia Unless8Bucles
Bucle For con rangosBucle WhileBreakNextRepaso - FactorialBucle TimesBucle UntilBucles anidadosRepaso - Entrada dinámica3Operadores Parte 1
Operadores aritméticosOperador móduloAtajos aritméticosResumen - Matemáticas simplesOperadores de comparación6Entrada y Salida Básica
Salida con putsSalida con print y pSalida con variablesEntrada con getsMétodo chompConversión de tiposResumen - Calculadora de edadResumen - Verdadero o falso