DEV Community

Cover image for Spread vs Rest - JavaScript
boibolang
boibolang

Posted on

Spread vs Rest - JavaScript

Spread dan Rest adalah 2 fungsi dalam JavaScript yang digunakan untuk menyimpan atau memisah nilai sebuah array ataupun object. Kedua fungsi ini menggunakan tanda titik tiga (…) tapi berbeda penempatannya. Daripada bingung hanya berteori, langsung ke contoh aplikasi saja.

Spread

Spread operator dipakai untuk memisah nilai iterable. Iterable itu sendiri adalah sebuah object yang bisa di-iterasi menggunakan metode perulangan for…of contohnya adalah array, string, map, set TIDAK TERMASUK object. Bingung kan ? Sama, sampai disini telan saja dulu mentah-mentah, awalnya saya juga bingung. Spread operator tidak menciptakan variabel baru.

const arr = [2,5,6,7,8,9,11,34,56];
const newArr = [1,3,...arr];
console.log(newArr);
console.log(...newArr);
for (const i of newArr) {
 console.log(i);
}
Enter fullscreen mode Exit fullscreen mode

result

Apa bedanya hasil console.log pada baris nomor 3 dan 4 ? Pada baris nomor 3 outputnya berupa array, pada baris nomor 4 nilainya dikeluarkan masing-masing, hasil yang sama bisa diperoleh dengan menggunakan perulangan for…of.

Penggunaan untuk meng-copy array:

const newNum = [...arr];
console.log(newNum);
Enter fullscreen mode Exit fullscreen mode

result

Menggabungkan isi array:

const join = [...arr,...newArr];
console.log(join);
Enter fullscreen mode Exit fullscreen mode

Image description

Mengambil elemen pada iterable:

const str = 'Wawan';
const letter = [...str,'','.ST'];
console.log(letter);
Enter fullscreen mode Exit fullscreen mode

result

Penggunaan pada object:

const siswa = {
 nama: 'Royce Gracie',
 alamat: 'Sao Paulo Brazil'
};
const newSiswa = {
 ...siswa,
 namaAyah: 'Carlo Gracie',
 namaIbu: 'Maria Mercedes'
};
console.log(newSiswa);
Enter fullscreen mode Exit fullscreen mode

result

Bagaimana jika spread operator digunakan untuk object ?

console.log(...newSiswa);
Enter fullscreen mode Exit fullscreen mode

result

Sesuai dengan yang saya singgung diatas, spread operator tidak bisa diaplikasikan untuk object.

Rest

Rest operator dipakai untuk menyimpan nilai sebuah variable ke dalam suatu array. Rest operator harus ditempatkan di statement paling akhir.
Contoh penggunaan dalam array:

const [k,l,...lain] = [1,2,3,4,5,6,7,8,9];
console.log(lain);
Enter fullscreen mode Exit fullscreen mode

result

Penggunaan pada object, sebelumnya kita tambahkan dulu property dan value pada object siswa diatas.

siswa.makanan = {
 senin: 'rendang',
 selasa: 'pecel',
 rabu: 'spaghetti',
};
const {...bekalSekolah} = siswa.makanan;
console.log(bekalSekolah);
Enter fullscreen mode Exit fullscreen mode

result

Penggunaan untuk fungsi:

const faktor = function(...numbers) {
 console.log(numbers);
 let acc = 1;
 for (let i=0; i<numbers.length; i++) acc*=numbers[i];
 console.log(acc);
};
faktor(2,3,4);
const ab = [2,3,4];
faktor(...ab);
Enter fullscreen mode Exit fullscreen mode

result

Top comments (0)