Data Structure: Array & Object
Hingga saat ini, kita hanya menyimpan satu nilai di dalam satu variabel. Namun, dalam aplikasi nyata, kita sering berurusan dengan kumpulan data. Bayangkan Anda sedang membangun aplikasi daftar belanja atau profil pengguna media sosial. Tidak mungkin kita membuat variabel barang1, barang2, barang3, dan seterusnya. Di sinilah Data Structure (Struktur Data) berperan untuk mengelompokkan data agar lebih teratur dan mudah dikelola.
Array: Menyimpan Daftar Data
Array adalah list atau daftar nilai yang disimpan secara berurutan. Di dalam Array, setiap data memiliki "nomor antrean" yang disebut Index. Satu hal yang wajib diingat: Index selalu dimulai dari 0, bukan 1.
1// Membuat Array
2const daftarBuah = ["Apel", "Mangga", "Pisang"];
3
4// Mengakses data berdasarkan index
5console.log(daftarBuah[0]); // Apel
6console.log(daftarBuah[1]); // Mangga
7
8// Mengubah data
9daftarBuah[2] = "Jeruk";
10console.log(daftarBuah); // ["Apel", "Mangga", "Jeruk"]Metode Dasar Array: JavaScript menyediakan fungsi bawaan (method) untuk memanipulasi isi Array dengan mudah:
push(): Menambah data ke akhir antrean.pop(): Menghapus data terakhir.unshift(): Menambah data ke awal antrean.shift(): Menghapus data pertama.
1let playlist = ["Song A", "Song B"];
2playlist.push("Song C"); // Menambah ke belakang
3playlist.shift(); // Menghapus "Song A"
4
5console.log(playlist); // ["Song B", "Song C"]
6console.log(playlist.length); // 2 (Mengecek jumlah data)Object: Data dengan Label (Key-Value)
Jika Array adalah daftar berurutan, maka Object adalah kumpulan data yang tidak berurutan namun memiliki label. Label ini disebut Key (kunci) dan isinya disebut Value (nilai). Object sangat cocok untuk menggambarkan sebuah benda atau entitas nyata.
1const smartphone = {
2 merek: "Samsung",
3 model: "S23",
4 warna: "Hitam",
5 is5G: true,
6 stok: 10,
7};
8
9// Akses menggunakan Dot Notation (paling sering digunakan)
10console.log(smartphone.merek); // Samsung
11
12// Akses menggunakan Bracket Notation
13console.log(smartphone["model"]); // S23Kesalahan Umum: Pemula sering tertukar antara Array dan Object. Gunakan [] (Array) jika urutan data itu penting (seperti daftar peringkat). Gunakan {} (Object) jika Anda ingin mendeskripsikan satu benda dengan berbagai ciri.
Array of Objects (Data Kompleks)
Dalam dunia kerja, Anda akan sangat sering bertemu dengan perpaduan keduanya. Contohnya adalah daftar pengguna di sebuah aplikasi, di mana "daftarnya" adalah Array, dan "setiap penggunanya" adalah Object.
1const daftarSiswa = [
2 { nama: "Andi", nilai: 85 },
3 { nama: "Budi", nilai: 92 },
4 { nama: "Caca", nilai: 78 },
5];
6
7// Mengakses nilai Budi
8console.log(daftarSiswa[1].nama); // Budi
9console.log(daftarSiswa[1].nilai); // 92Looping Data Kompleks
Bagaimana jika kita ingin menampilkan semua nama siswa dari data di atas? Kita gunakan teknik perulangan yang sudah dipelajari di Section 5.
1for (let i = 0; i < daftarSiswa.length; i++) {
2 console.log(
3 "Siswa: " + daftarSiswa[i].nama + ", Skor: " + daftarSiswa[i].nilai
4 );
5}Alur Eksekusi:
- Loop dimulai dari
i = 0. daftarSiswa[0]adalah object Andi. Diambil.nama-nya.- Loop berlanjut ke
i = 1, mengambil data Budi, dan seterusnya. - Loop berhenti otomatis saat
imencapai jumlah panjang array (.length).
Studi Kasus: Menghitung Total Harga Keranjang
Mari kita buat simulasi kasir sederhana menggunakan Array of Objects.
1const keranjang = [
2 { produk: "Sabun", harga: 5000, jumlah: 2 },
3 { produk: "Susu", harga: 15000, jumlah: 1 },
4 { produk: "Roti", harga: 10000, jumlah: 3 },
5];
6
7let totalBayar = 0;
8
9for (let i = 0; i < keranjang.length; i++) {
10 let subtotal = keranjang[i].harga * keranjang[i].jumlah;
11 totalBayar += subtotal;
12}
13
14console.log("Total yang harus dibayar: Rp" + totalBayar);Prediksi Output: Coba hitung manual: (5000 _ 2) + (15000 _ 1) + (10000 * 3) = 10.000 + 15.000 + 30.000. Hasilnya adalah 55.000. JavaScript melakukan perhitungan ini secara otomatis dalam hitungan milidetik seberapa pun banyaknya data produk yang Anda miliki.