Menu
Coddy logo textTech

Filter

Parte de la sección Lógica y Flujo del Journey de Swift de Coddy — lección 24 de 56.

filter toma una clausura de predicado y devuelve un nuevo array que contiene solo los elementos para los cuales la clausura devolvió true.

let nums = [1, 2, 3, 4, 5, 6]
let evens = nums.filter { $0 % 2 == 0 }
print(evens)                 // [2, 4, 6]

El resultado mantiene el orden original. El tipo de resultado coincide con el tipo de entrada, no ocurre ninguna transformación, solo una selección.

filter se encadena de forma natural con map:

let big = nums
    .filter { $0 > 2 }
    .map { $0 * $0 }
print(big)                   // [9, 16, 25, 36]

Lee cada cadena de arriba a abajo, al igual que una tubería. Cada paso produce un nuevo array; nada modifica el original.

challenge icon

Desafío

Fácil

Lee dos líneas de entrada:

  1. Una lista de enteros separados por comas
  2. Un entero min

Imprime, en líneas separadas:

  1. Los enteros estrictamente mayores que min, unidos con , (o vacío si ninguno califica)
  2. Los cuadrados de los enteros que califican, unidos con ,
  3. La cantidad de enteros que califican

Usa filter + map como una cadena. No iterar dos veces sobre la entrada.

Para la entrada 1,5,2,8,3,7 en la línea 1 y 4 en la línea 2, el resultado es:

5,8,7
25,64,49
3

Hoja de referencia

Usa filter para seleccionar elementos que coincidan con una condición:

let evens = [1,2,3,4].filter { $0 % 2 == 0 } // [2, 4]

Encadena filter con map como una tubería (pipeline):

let result = nums
    .filter { $0 > 2 }
    .map { $0 * $0 }  // [9, 16, 25, 36]

Cada paso devuelve un nuevo array; el original permanece sin cambios. Se preserva el orden.

Pruébalo tú mismo

let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
let min = Int(readLine()!)!

// TODO: filtrar > min una vez, luego mapear a cuadrados; imprimir ambos, luego contar
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