Tabel yang Bisa Di-sortir
Tabel data dengan header yang bisa diklik untuk mengurutkan naik/turun.
Kenapa Tabel Sortable?
Tabel statis hanya menampilkan data. Tabel sortable membuat data bisa dijelajahi: klik "Harga" untuk melihat termurah, klik lagi untuk termahal. Ini fitur standar di dashboard admin, laporan, dan spreadsheet web.
Langkah Membangun
HTML: <table> semantik: <thead> berisi <th> yang bisa diklik (tambah panah ↕ sebagai petunjuk), <tbody> akan diisi JS.
CSS: Tabel rapi: border-collapse: collapse, baris belang-belang (tr:nth-child(even)), header dengan background ungu dan cursor pointer, hover baris memberi highlight.
JS: Kuncinya: data disimpan sebagai array of object di JS, tabel hanya "tampilan" dari data itu.
- Fungsi
render()membangun baris<tr>dari array data. - Klik header: urutkan array dengan
sort()berdasarkan kolom itu. Klik kedua membalik arah (toggle asc/desc). - Update panah di header (↑/↓) dan render ulang.
array.sort((a, b) => a.harga - b.harga) untuk angka, a.nama.localeCompare(b.nama) untuk teks (mendukung huruf Indonesia dengan benar).
Prinsip Penting: Data vs Tampilan
Pemula sering mengurutkan elemen DOM langsung (memindahkan <tr>). Itu rapuh. Pola profesional: ubah DATANYA, lalu gambar ulang tampilannya. Prinsip ini dipakai di semua framework modern (React, Vue).
Kesalahan Umum
- Mengurutkan angka sebagai teks sehingga 100 muncul sebelum 20 ("100" < "20" sebagai string).
- Lupa mereset panah kolom lain saat kolom baru diklik.
- Sort tidak stabil untuk data campuran (pisahkan logika angka vs teks).
export default function App(): JSX.Element { return <h1>Hello world</h1> }
Tantangan
Tantangan: Pencarian + Sortir
Tambahkan input pencarian di atas tabel yang memfilter baris berdasarkan nama produk, dan tetap bisa dikombinasikan dengan sortir kolom.