Menu
Coddy logo textTech

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}"
end

Esto produce:

0: apple
1: banana
2: cherry

Observa 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}"
end

Al 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.

challenge icon

Desafío

Fácil

Lee 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: date

Si la entrada es red,green,blue, la salida debe ser:

Item 1: red
Item 2: green
Item 3: blue

Si 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: friday

Si la entrada es solo, la salida debe ser:

Item 1: solo

Hoja 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}"
end

Salida:

0: apple
1: banana
2: cherry

El 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}"
end

Prué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"
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos