Menu
Coddy logo textTech

Filter

Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy — Lektion 24 von 56.

filter nimmt eine Prädikats-Closure entgegen und gibt ein neues Array zurück, das nur die Elemente enthält, für die die Closure true zurückgegeben hat.

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

Das Ergebnis behält die ursprüngliche Reihenfolge bei. Der Ergebnistyp entspricht dem Eingabetyp, es findet keine Transformation statt, nur eine Auswahl.

filter lässt sich natürlich mit map verketten:

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

Lies jede Kette von oben nach unten, genau wie eine Pipeline. Jeder Schritt erzeugt ein neues Array; nichts verändert das Original.

challenge icon

Aufgabe

Einfach

Lies zwei Zeilen Eingabe ein:

  1. Eine durch Kommata getrennte Liste von Ganzzahlen
  2. Eine Ganzzahl min

Gib in separaten Zeilen Folgendes aus:

  1. Die Ganzzahlen, die strikt größer als min sind, verbunden mit , (oder leer, falls keine zutreffen)
  2. Die Quadrate der zutreffenden Ganzzahlen, verbunden mit ,
  3. Die Anzahl der zutreffenden Ganzzahlen

Verwende filter + map als Kette. Iteriere nicht zweimal über die Eingabe.

Für die Eingabe 1,5,2,8,3,7 in Zeile 1 und 4 in Zeile 2 lautet die Ausgabe:

5,8,7
25,64,49
3

Spickzettel

Verwenden Sie filter, um Elemente auszuwählen, die einer Bedingung entsprechen:

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

Verketten Sie filter mit map als Pipeline:

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

Jeder Schritt gibt ein neues Array zurück; das Original bleibt unverändert. Die Reihenfolge bleibt erhalten.

Probier es selbst

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

// TODO: einmal nach > min filtern, dann auf Quadrate abbilden; beides ausgeben, dann zählen
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Kontrollfluss