Menu
Coddy logo textTech

Select y Reject

Parte de la sección Lógica y flujo del Journey de Ruby de Coddy. Lección 21 de 56.

El método select devuelve un nuevo array que contiene únicamente los elementos para los que el bloque devuelve un valor verdadero. Es la forma en que Ruby expresa «filtrar».

numbers = [1, 2, 3, 4, 5, 6]
evens = numbers.select { |n| n.even? }
puts evens.inspect   # [2, 4, 6]

reject es lo contrario: conserva todo aquello para lo que el bloque devuelve false:

odds = numbers.reject { |n| n.even? }
puts odds.inspect    # [1, 3, 5]

Ambos devuelven un nuevo array; el original no se modifica.

El bloque es simplemente un predicado; cualquier cosa que se evalúe como true o false funciona:

words = ["hi", "hello", "hey", "yo"]
long  = words.select { |w| w.length >= 3 }
puts long.inspect    # ["hello", "hey"]
challenge icon

Desafío

Principiante

Lee una lista de enteros separados por comas. Imprime dos líneas:

  1. Los números mayores que 10 (usa select), unidos con ,
  2. Los números no divisibles por 3 (usa reject), unidos con ,

Para la entrada 3,7,12,15,20, la salida es:

12, 15, 20
7, 20

Pruébalo tú mismo

numbers = gets.chomp.split(",").map(&:to_i)

# TODO: línea 1, numbers > 10, unidos con ", "
# TODO: línea 2, numbers NO divisibles por 3, unidos con ", "
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 Lógica y flujo

Practica por tu cuenta: Compilador de Ruby online