Menu
CoddyTech

flatMap

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

flatMap digunakan saat setiap elemen menghasilkan beberapa hasil. Closure mengembalikan sebuah array, lalu flatMap menggabungkan semuanya menjadi satu array datar.

let groups = [[1, 2, 3], [4, 5], [6]]
let all = groups.flatMap { $0 }
print(all)                       // [1, 2, 3, 4, 5, 6]

Kamu juga bisa melakukan pekerjaan nyata di dalam closure. Memetakan setiap nilai ke array kecil lalu meratakan hasilnya dalam satu langkah adalah kasus penggunaan yang umum:

let nums = [1, 2, 3]
let pairs = nums.flatMap { [$0, $0 * $0] }
print(pairs)                     // [1, 1, 2, 4, 3, 9]

Bandingkan dengan map: itu akan menghasilkan [[Int]], sebuah array yang berisi array kecil, yang perlu kamu ratakan dengan langkah lain. flatMap menggabungkan kedua langkah itu menjadi satu.

challenge icon

Tantangan

Mudah

Baca dua baris input:

  1. list bilangan bulat yang dipisahkan koma, yaitu nums
  2. list bilangan bulat yang dipisahkan koma, yaitu repeats (panjangnya sama dengan nums)

Untuk setiap i, ulangi nums[i] tepat sebanyak repeats[i] kali. Cetak array datar yang dihasilkan, dengan nilai-nilainya digabungkan menggunakan ,. Gunakan flatMap.

Untuk input 5,7,2 pada baris 1 dan 3,1,2 pada baris 2, outputnya adalah 5,5,5,7,2,2.

Coba sendiri

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

// TODO: gunakan flatMap untuk mengubah setiap (num, repeat) menjadi Array(repeating:count:); gabungkan dengan ","
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