Dalam JavaScript modern (ES6+), ada satu simbol yang sangat serbaguna: tiga titik (...
). Tergantung pada konteks penggunaannya, simbol ini bisa menjadi Spread Operator atau Rest Parameter.
Walaupun terlihat sama, fungsi keduanya berlawanan:
- Spread: untuk menyebarkan elemen.
- Rest: untuk mengumpulkan elemen.
Mari kita bahas satu per satu dengan contoh sederhana.
🚀 Spread Operator (...
)
1. Menyalin Array
1const angka = [1, 2, 3];
2const salinan = [...angka];
3
4console.log(salinan); // [1, 2, 3]
5
1const angka = [1, 2, 3];
2const salinan = [...angka];
3
4console.log(salinan); // [1, 2, 3]
5
2. Menggabungkan Array
1const satu = [1, 2];
2const dua = [3, 4];
3
4const gabung = [...satu, ...dua];
5
6console.log(gabung); // [1, 2, 3, 4]
7
1const satu = [1, 2];
2const dua = [3, 4];
3
4const gabung = [...satu, ...dua];
5
6console.log(gabung); // [1, 2, 3, 4]
7
3. Menyalin atau Menambahkan Properti Object
1const user = { nama: "Ari", umur: 25 };
2const userLengkap = { ...user, kota: "Surabaya" };
3
4console.log(userLengkap); // { nama: "Ari", umur: 25, kota: "Surabaya" }
5
1const user = { nama: "Ari", umur: 25 };
2const userLengkap = { ...user, kota: "Surabaya" };
3
4console.log(userLengkap); // { nama: "Ari", umur: 25, kota: "Surabaya" }
5
4. Menyebarkan String menjadi Array
1const teks = "Halo";
2const karakter = [...teks];
3
4console.log(karakter); // ['H', 'a', 'l', 'o']
5
1const teks = "Halo";
2const karakter = [...teks];
3
4console.log(karakter); // ['H', 'a', 'l', 'o']
5
📦 Rest Parameter (...
)
Kebalikan dari spread: rest digunakan untuk mengumpulkan sisa nilai ke dalam array.
1. Dalam Parameter Fungsi
1function hitungJumlah(...angka) {
2 return angka.reduce((total, nilai) => total + nilai, 0);
3}
4
5console.log(hitungJumlah(1, 2, 3, 4)); // 10
6
1function hitungJumlah(...angka) {
2 return angka.reduce((total, nilai) => total + nilai, 0);
3}
4
5console.log(hitungJumlah(1, 2, 3, 4)); // 10
6
2. Destructuring dengan Sisa Nilai
1const [pertama, ...sisa] = [10, 20, 30, 40];
2
3console.log(pertama); // 10
4console.log(sisa); // [20, 30, 40]
5
1const [pertama, ...sisa] = [10, 20, 30, 40];
2
3console.log(pertama); // 10
4console.log(sisa); // [20, 30, 40]
5
3. Rest di Object
1const user = { nama: "Lia", umur: 23, hobi: "membaca" };
2const { nama, ...lainnya } = user;
3
4console.log(nama); // Lia
5console.log(lainnya); // { umur: 23, hobi: "membaca" }
6
1const user = { nama: "Lia", umur: 23, hobi: "membaca" };
2const { nama, ...lainnya } = user;
3
4console.log(nama); // Lia
5console.log(lainnya); // { umur: 23, hobi: "membaca" }
6
⚠️ Tips Penggunaan
- Gunakan spread saat ingin menyalin atau menggabungkan.
- Gunakan rest saat ingin mengelompokkan sisa data.
- Spread dan rest tidak bisa digunakan di luar array atau object literal.
✨ Kesimpulan
Spread dan rest operator membuat manipulasi data di JavaScript lebih fleksibel dan modern. Keduanya sangat membantu dalam berbagai situasi — dari menggabungkan array, menyalin object, hingga menangani parameter fungsi dinamis.
Setelah memahami destructuring dan operator ...
, kamu telah menyelesaikan bagian penting dari JavaScript Modern. Artikel berikutnya akan membahas Template Literal, fitur lain yang membuat penulisan string di JavaScript jadi lebih ekspresif.