Data dan Halaman Web · Pelajaran 10 dari 10

Proyek: logika daftar tugas

10 menit baca · BelajarCode

Aplikasi daftar tugas (to-do list) adalah proyek klasik untuk berlatih JavaScript. Kita mulai dari logikanya, yang bisa diuji di Playground. Setelah itu, menyambungkannya ke tampilan tinggal memakai DOM.

Rancangan data

Setiap tugas adalah objek dengan id, judul, dan selesai. Semua tugas disimpan dalam satu array.

JavaScript
1let tugas = [];2let idBerikutnya = 1;34function tambah(judul) {5  const bersih = judul.trim();6  if (bersih === "") return null;7  const baru = { id: idBerikutnya++, judul: bersih, selesai: false };8  tugas.push(baru);9  return baru;10}1112function tandaiSelesai(id) {13  const t = tugas.find((t) => t.id === id);14  if (t) t.selesai = true;15}1617function hapus(id) {18  tugas = tugas.filter((t) => t.id !== id);19}2021function tampilkan(judulDaftar, daftar) {22  console.log(`${judulDaftar} (${daftar.length})`);23  for (const t of daftar) {24    console.log(`  [${t.selesai ? "x" : " "}] ${t.id}. ${t.judul}`);25  }26}2728tambah("Kerjakan PR matematika");29tambah("  Baca bab 3 sejarah  ");30tambah("Latihan JavaScript");31tambah("   ");32tandaiSelesai(1);33hapus(2);3435tampilkan("Semua tugas", tugas);36tampilkan("Belum selesai", tugas.filter((t) => !t.selesai));37const persen = Math.round(tugas.filter((t) => t.selesai).length / tugas.length * 100);38console.log(`Kemajuan: ${persen}%`);
Logika daftar tugas
Keluaran
Semua tugas (2)
  [x] 1. Kerjakan PR matematika
  [ ] 3. Latihan JavaScript
Belum selesai (1)
  [ ] 3. Latihan JavaScript
Kemajuan: 50%

Hal penting dari proyek ini

  • Judul dibersihkan dengan trim(), dan judul kosong ditolak. Tugas " " tidak pernah masuk.
  • Setiap tugas punya id unik, sehingga bisa ditandai atau dihapus walaupun judulnya sama.
  • filter dipakai untuk menghapus dan untuk menampilkan tugas yang belum selesai, tanpa perulangan manual.
  • Setiap fungsi mengerjakan satu hal dan mudah diuji sendiri.

Menyambungkan ke halaman

Di halaman web, fungsi tampilkan diganti dengan fungsi yang membuat elemen <li> untuk setiap tugas, dan tombol "Tambah" memanggil tambah(input.value) lalu menggambar ulang daftarnya. Untuk menyimpan tugas walaupun halaman dimuat ulang, data bisa disimpan di localStorage dalam bentuk JSON.

Cek pemahaman

Kenapa setiap tugas diberi id, bukan hanya dikenali dari judulnya?

Latihan

Ubah judul dan urutkan

Tambahkan dua fungsi: ubahJudul(id, judulBaru) yang menolak judul kosong, dan urutkanBelumSelesaiDulu() yang mengembalikan salinan daftar dengan tugas yang belum selesai di atas.

Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler JavaScript online.

Tandai pelajaran ini selesai

Masuk ke aplikasi untuk mencatat kemajuan, lalu lanjutkan ke pelajaran berikutnya dari perangkat mana pun.

Buka di aplikasi