0Pricing
Lua Academy · Pelajaran

Mentransformasi Tabel: map, filter, reduce

Bangun pembantu higher-order fungsional untuk transformasi tabel.

Mentransformasi Tabel: map, filter, reduce adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.

Pola Fungsional dalam Lua

Lua tidak memiliki map/filter/reduce bawaan, tetapi ketiganya mudah diimplementasikan menggunakan closure dan perulangan for generik.

map: Mengubah Setiap Elemen

map menerapkan fungsi pada setiap elemen dan mengembalikan tabel baru berisi hasilnya.

local function map(t, fn)
  local result = {}
  for i, v in ipairs(t) do result[i] = fn(v) end
  return result
end
local doubled = map({1,2,3}, function(x) return x * 2 end)
print(table.concat(doubled, ", "))  -- 2, 4, 6

filter: Mempertahankan Elemen yang Sesuai

filter hanya mempertahankan elemen yang predikatnya mengembalikan true.

local function filter(t, pred)
  local result = {}
  for _, v in ipairs(t) do
    if pred(v) then result[#result+1] = v end
  end
  return result
end
local evens = filter({1,2,3,4,5}, function(x) return x % 2 == 0 end)
print(table.concat(evens, ", "))  -- 2, 4

reduce: Melipat menjadi Satu Nilai

reduce menggabungkan elemen dari kiri ke kanan menggunakan akumulator.

local function reduce(t, fn, init)
  local acc = init
  for _, v in ipairs(t) do acc = fn(acc, v) end
  return acc
end
local sum = reduce({1,2,3,4,5}, function(a,b) return a+b end, 0)
print(sum)  -- 15

Merangkai Operasi

Rangkai map, filter, dan reduce untuk membentuk alur data yang ekspresif.

local nums = {1,2,3,4,5,6,7,8,9,10}
local result = reduce(
  map(
    filter(nums, function(x) return x % 2 == 0 end),
    function(x) return x * x end
  ),
  function(a,b) return a + b end, 0
)
print(result)  -- 220

forEach: Efek Samping

forEach melakukan iterasi tanpa membuat tabel baru—berguna untuk efek samping seperti mencetak.

local function forEach(t, fn)
  for i, v in ipairs(t) do fn(v, i) end
end
forEach({"a","b","c"}, function(v, i) print(i, v) end)

flatMap: Memetakan lalu Meratakan

flatMap memetakan setiap elemen menjadi sebuah daftar, lalu menggabungkan semua daftar.

local function flatMap(t, fn)
  local result = {}
  for _, v in ipairs(t) do
    for _, item in ipairs(fn(v)) do
      result[#result+1] = item
    end
  end
  return result
end
local expanded = flatMap({1,2,3}, function(x) return {x, x*10} end)

zip: Menggabungkan Dua Tabel

zip memasangkan elemen dari dua tabel menjadi tabel berisi pasangan.

local function zip(a, b)
  local result = {}
  for i = 1, math.min(#a, #b) do
    result[i] = {a[i], b[i]}
  end
  return result
end
local zipped = zip({1,2,3}, {"a","b","c"})

Bekerja dengan Tabel Kamus

Untuk tabel pasangan kunci-nilai, lakukan iterasi dengan pairs, bukan ipairs, lalu kumpulkan pasangan kunci-nilai.

local function mapValues(t, fn)
  local result = {}
  for k, v in pairs(t) do result[k] = fn(v) end
  return result
end
local doubled = mapValues({x=1,y=2}, function(v) return v*2 end)

Konsep Evaluasi Malas

Untuk kumpulan data besar, pertimbangkan iterator malas (closure yang menghasilkan satu elemen setiap kali) agar tidak perlu membuat tabel perantara yang besar.

Catatan Performa

Setiap map/filter membuat alokasi tabel baru. Untuk perulangan yang ketat, mutasi langsung mungkin lebih efisien, tetapi mengorbankan sifat tidak dapat diubah dan kejelasan.

Pertanyaan tentang reduce

Apa yang dikembalikan oleh reduce({1,2,3,4}, function(a,b) return a+b end, 0)?

Ringkasan: map/filter/reduce

map mengubah, filter memilih, dan reduce melipat. Ketiga fungsi tingkat tinggi ini menjadi dasar pemrosesan data fungsional dalam Lua.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mentransformasi Tabel: map, filter, reduce” gratis?

Ya — teks lengkap “Mentransformasi Tabel: map, filter, reduce” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mentransformasi Tabel: map, filter, reduce”?

Bangun pembantu higher-order fungsional untuk transformasi tabel. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Lua Academy?

Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Mentransformasi Tabel: map, filter, reduce” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?

Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. table.sort dengan Pembanding
  2. table.concat dan table.move
  3. Salinan Mendalam dan Salinan Dangkal
  4. Mentransformasi Tabel: map, filter, reduce
← Kembali ke Lua Academy