Menu
Coddy logo textTech

Map y Collect

Parte de la sección Fundamentos del Journey de Ruby de Coddy — lección 68 de 88.

Mientras que each es ideal para realizar acciones sobre elementos, a veces querrás transformar un array en uno nuevo. El método map (también llamado collect) hace exactamente esto: crea un nuevo array que contiene los resultados de ejecutar tu bloque en cada elemento.

numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }

puts doubled  # Salida: 2, 4, 6, 8

La diferencia clave con respecto a each es que map devuelve un nuevo array con los valores transformados. El array original permanece sin cambios.

Aquí tienes un ejemplo práctico que convierte temperaturas de Celsius a Fahrenheit:

celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }

puts fahrenheit  # Salidas: 32, 68, 212

También puedes usar map con cadenas:

names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }

puts capitalized  # Salida: Alice, Bob

Los métodos map y collect son idénticos. Ruby proporciona ambos nombres, por lo que puedes usar el que mejor se lea en tu código. La mayoría de los desarrolladores de Ruby prefieren map porque es más corto.

challenge icon

Desafío

Fácil

Lee una sola línea de entrada que contenga números enteros separados por comas (por ejemplo, 2,4,6,8,10).

Divide la entrada en un arreglo de enteros, luego usa el método map para crear un nuevo arreglo donde cada número sea elevado al cuadrado (multiplicado por sí mismo).

Imprime cada elemento del nuevo arreglo de cuadrados en su propia línea.

Por ejemplo, si la entrada es 2,4,6,8,10, la salida debería ser:

4
16
36
64
100

Si la entrada es 1,2,3,4,5, la salida debería ser:

1
4
9
16
25

Si la entrada es 3,7,11, la salida debería ser:

9
49
121

Si la entrada es 10, la salida debería ser:

100

Hoja de referencia

El método map (también llamado collect) transforma un array en uno nuevo aplicando un bloque a cada elemento. Devuelve un nuevo array con los valores transformados, dejando el array original sin cambios.

numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled  # Salida: 2, 4, 6, 8

Ejemplo con conversión de temperatura:

celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit  # Salida: 32, 68, 212

Ejemplo con cadenas de texto:

names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized  # Salida: Alice, Bob

map y collect son métodos idénticos. La mayoría de los desarrolladores de Ruby prefieren map.

Pruébalo tú mismo

# Leer la entrada separada por comas
input = gets.chomp

# TODO: Escribe tu código a continuación
# 1. Divide la cadena de entrada en un arreglo de enteros
# 2. Usa el método map para elevar al cuadrado cada número
# 3. Imprime cada número al cuadrado en su propia línea
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