Menu
CoddyTech

Filter

Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 24 dari 56.

filter menerima closure predikat dan mengembalikan array baru yang hanya berisi elemen-elemen yang closure-nya mengembalikan true.

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

Hasilnya mempertahankan urutan asli. Tipe hasil sesuai dengan tipe input, tidak ada transformasi yang terjadi, hanya pemilihan.

filter dapat dirangkai dengan map secara alami:

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

Baca setiap rantai dari atas ke bawah, seperti pipeline. Setiap langkah menghasilkan array baru, tidak ada yang mengubah array asli.

challenge icon

Tantangan

Mudah

Baca dua baris input:

  1. list bilangan bulat yang dipisahkan koma
  2. Bilangan bulat min

Cetak pada baris terpisah:

  1. Bilangan bulat yang lebih besar dari min, digabungkan dengan , (atau kosong jika tidak ada yang memenuhi)
  2. Kuadrat dari bilangan bulat yang memenuhi, digabungkan dengan ,
  3. Jumlah bilangan bulat yang memenuhi

Gunakan filter + map secara berantai. Jangan lakukan iterasi dua kali pada input.

Untuk input 1,5,2,8,3,7 pada baris 1 dan 4 pada baris 2, output-nya adalah:

5,8,7
25,64,49
3

Coba sendiri

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

// TODO: filter nilai > min sekali, lalu map menjadi kuadrat; cetak keduanya, lalu hitung jumlahnya
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Playground Swift